1.python连接oracle首先需要cx_Oracle这个库,下载地址是:https://pypi.python.org/pypi/cx_Oracle/5.3,这是python的第三方库仓库。选择相应的oracle版本和python进行下载。
我下载的是11G的oracle数据库版本,以及3.5的python版本这个。
接下来安装cx_Oracle,安装很简单,在安装过程中如果版本是正确的话,能够识别出python。
2.因为安装cx_Oracle是针对64位的win系统,所以相应的oracle客户端也需要64位的。如果不用64位的oracle客户端,
会报错“”cx_Oracle ImportError: DLL load failed: %1 不是有效的 Win32 应用程序。“”
下载64位的oracle客户端。下载地址:http://download.csdn.net/download/wu858773457/9873799
下载完之后,将oci.dll,oraocci11.dll,oraociei11.dll这3个文件放到python安装目录下,Lib-》site-packages中。
新下载的oracle客户端下,network-->admin中建立tnsnames.ora文件,或者从之前的客户端中拷贝过来。
配置oracle客户端的环境变量
3.接下来运行测试程序
import cx_Oracle
username="***"
userpwd="***"
host="192.168.168.2"
port=1521
dbname="***"
dsn=cx_Oracle.makedsn(host, port, dbname)
connection=cx_Oracle.connect(username, userpwd, dsn)
cursor = connection.cursor()
sql = "select * from tab"
cursor.execute(sql)
result = cursor.fetchall()
count = cursor.rowcount
print ("=====================" )
print ("Total:", count)
print ("=====================")
for row in result:
print (row)
cursor.close()
connection.close()
我连的是本机虚拟机的oracle服务器,pl/sql也无法连接,也是提示无监听。我用本机telnet1521端口也连不上。
在网上找到了解决办法,是oracle服务端listener.ora文件配置的问题。将红框中的localhost.localdomain改为机器IP,问题就解决了。
参考文章:http://blog.csdn.net/luomaozhong/article/details/53174338
下面是程序的运行结果: