python连接oracle配置
admin
2023-05-01 06:24:16
0


环境:

操作系统:win7 64位,CPUinterpc

Oracle服务端:Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production

Oracle本地客户端:Release 11.2.0.1.0  32bit Production

Python版本:python2.7.5 (安装路径:C:\Python27\

 

cx_Oracle版本:cx_Oracle-5.2.1-11g.win-amd64-py2.7.exe

Iinstantclient版本:instantclient-basic-win-x86-64-11.2.0.1.0.zip

 

 

 

在学习python过程中,需要连接oracle数据库,所以要安装cx_Oracle

 

安装cx_Oracle-5.2.1-11g.win-amd64-py2.7.exeimport cx_Oracle报错。提示:import cx_Oracle

ImportError: DLL load failed: %1 不是有效的 Win32 应用程序。根据报错提示应该是缺少dll文件,因为我本机oracle客户端是32位的,64位的cx_Oracle程序调用32位的动态库肯定会报错。

 

根据文章http://blog.csdn.net/huzhenwei/article/details/3946308指点,去oracle网站下载了instance client,地址是

http://www.oracle.com/technology/software/tech/oci/instantclient/index.html。

我下载了instantclient-basic-win-x86-64-11.2.0.1.0.zip这个版本。

直接解压C:\instantclient_11_2 目录下。

 

环境变量系统变量中增加:

ORACLE_HOME = C:\instantclient_11_2 (网上说需要,但是测试不加也可以)

TNS_ADMIN = C:\instantclient_11_2  (网上说需要,但是测试不加也可以)
NLS_LANG = SIMPLIFIED CHINESE_CHINA.ZHS16GBK
修改Path变量,在后面添加 C:\instantclient_11_2

 

 

然后把解压包中的oci.dll文件放到%python_home%\Lib\site-packages 下,再次import不会报错了。

 

 

执行测试python脚本报错,提示cx_Oracle Interface Error: Unable to acquire Oracle enviroment handle。启动PLSQL登陆打开的是刚才的tns,但登陆就报错ORA-1以为是instance client和之前安装的32位oracle client冲突,ORA-12557。感觉是这个64位的instance client与之前装的32位oracle client冲突了。于是把环境变量里的ORACLE_PATH删掉,就可以登陆PLSQL了。但测试语句还是报那个错。折腾了半天,最后死马当活马医吧,尝试着把C:\instantclient_11_2里面的dll文件都拷贝到了python的C:\Python27\Lib\site-packages目录下,又RUN了一下,居然不报错了。 然后逐个删掉,最后发现oraociei11.dll删掉会报错,而其它dll删掉重新Run都不会报错。

不过使用PLSQL登陆还是会报错,只好把环境变量ORACLE_HOME删掉了,并不影响cx_Oracle的使用。原理不太清楚,先记录下来。

 

Python测试脚本:

#!/usr/bin/python
#coding=utf-8
import cx_Oracle

username = "smb"
passwd = "czty_smb"
host = "192.168.150.233"
port = "1521"
sid = "zsms"
dsn = cx_Oracle.makedsn(host, port, sid)
con = cx_Oracle.connect(username, passwd, dsn)
cursor= con.cursor()
sql = 'SELECT smbms, prtms  FROM t_user_mobile_dz'
cursor.execute(sql)
result = cursor.fetchall()
print "Total: " + str(cursor.rowcount)
for row in result:
	print row
cursor.close()
con.close()

 


上一篇:oracle之sql查询二

下一篇:oracle中extents

相关内容

热门资讯

汇正财经贺峰的一对一指导服务怎...   对于考虑购买证券投资顾问服务的投资者来说,'一对一指导服务怎么样'是一个重要的考量维度。需要首先...
重庆失联00后网格员龚宝冬确认...   重庆失联00后网格员龚宝冬确认遇难  【重庆失联00后网格员龚宝冬确认遇难】2026年7月29日...
震惊!女子种出二三十万斤玉米后... 女子种出二三十万斤玉米后懵圈了  【女子种出二三十万斤玉米后懵圈了】7月28日消息,商华颖,杭州千岛...
烈焰熊熊,堪比“原子弹”,欧洲... 据美国有线电视新闻网(CNN)7月29日报道,席卷法国西南部的大片野火燃烧得如此猛烈,以至于形成了一...
外交部:对日本熊本县地震遇难者... 据凤凰卫视报道,针对日本熊本县发生强震造成人员伤亡,中国外交部发言人毛宁7月29日在例行记者会上表示...
高铁喧哗被劝阻后叫嚣全家体制内... “女子高铁喧哗被劝阻后叫嚣全家体制内”一事迎来官方通报。据新京报报道,7月29日,辽宁北票市公安局发...
广东专业蓝牙耳机定制厂家推荐,... 在珠三角腹地,广东早已成为全球蓝牙耳机产业链的“心脏地带”。从深圳华强北的声学元件批发,到东莞、惠州...
格雷厄姆葬礼变地缘竞价场!两大... 有些葬礼,送别的是逝者;有些葬礼,演的却是活人最现实的政治博弈。当地时间7月28日,美国老牌鹰派参议...
一道小学数学题难住3名医学博士... 3名不同学校的博士同做一道数学题,谁最厉害?近日,一陕西网友发布的视频引发热议。29日,视频发布者“...
华为全新“小艺任务”亮相:整合... 7月29日,在华为鸿蒙电脑新品技术沟通会上,终端云服务小艺业务部总裁贾永利宣布,小艺将迎来“从对话到...