作为Python小白,我在自己的电脑安装了Python3.6,Pycharm和Mysql数据库,在数据库连接时直接pip install pymysql完成。
公司的电脑winXP,Oracle 10g,我安装Python3.4
在进行Python与Oracle连接时需要cx_Oracle,没有注意版本匹配,安装了cx_Oracle-5.3-11g.win32-py3.4.exe
结果在进行数据库连接时报错cx_Oracle.DatabaseError: ORA-24315: 非法的属性类型
出现该错误的原因是因为版本不兼容,检查了一下环境,我的oracle client是10g的,当时根本没注意版本问题。
然后网上找Python3.4 Oracle 10g的cx_Oracle(费老劲了)
找到一篇博客Python cx_Oracle安装小记
cx_Oracle 可以到这里下载:http://cx-oracle.sourceforge.net/
旧版本的下载地址:http://sourceforge.net/projects/cx-oracle/files/
但是旧版本中没有Python3.4 Oracle 10g的cx_Oracle
只能卸载Python3.4安装Python3.3和cx_Oracle-5.1.2-10g.win32-py3.3.msi
import cx_Oracle print("cx_Oracle.version:", cx_Oracle.version) conn=cx_Oracle.connect('用户名/密码@IP:端口/数据库') c=conn.cursor() x=c.execute('select sysdate from dual') data=x.fetchone() print(data) c.close() conn.close()
成功打印系统时间
由于Python3.3没有自带pip,重新安装pip
有三点需要注意
- Python、Oracle 10g、cx_Oracle三个文件必须对应,都是64位或者都是32位
- cx_Oracle和python版本对应,不要一个2.7一个3.5,这样就很尴尬了
- cx_Oracle和Oracle 10g版本必须对应,在上图中可以看见都是10g(根据你服务器的oracle版本来选择)的,否则安装完依旧会报错