使用Python 3.4连接到Oracle 11(64位),但无论我尝试什么,我似乎无法建立连接。我已经尝试过cx_Oracle包和pyodbc包都没有成功。
尝试使用cx_Oracle
conn = cx_Oracle.connect('username/password@server')
和
oradsn = cx_Oracle.makedsn(host, port, server)
conn = cx_Oracle.connect(user="username, password=password, dsn=oradsn")
错误:无法获取Oracle环境句柄
尝试使用pyodbc
conn = pypyodbc.connect('DRIVER={ORACLE ODBC DRIVER};DBQ=dsn name;UID=username;PWD=password')
和
conn = pyodbc.connect('DSN=dsn;SERVER=server;UID=username;PWD=password')
错误:由于系统错误,无法加载指定的驱动程序1114:动态链接库(DDL)初始化例程失败。 (< ---- sqora32.dll在那个位置,我已经检查过了)
环境变量:
ORACLE_HOME = C:\Oracle\Ora11_x64
有什么建议吗?
由于
答案 0 :(得分:0)
首先,在Windows上,不要使用环境变量ORACLE_HOME。那只应该在Linux / Unix平台上使用。您应该使用PATH环境变量。
其次,使用SQL * Plus确认您能够连接到数据库。有很多页面讨论如何做到这一点。这是一个:
http://penguinman-techtalk.blogspot.ca/2009/02/sqlplus-connection-to-remote-oracle.html
最后,如果您想使用makedsn,您需要执行以下操作:
dsn = cx_Oracle.makedsn(host, port, server)
conn = cx_Oracle.connect(user, pwd, dsn)
如果您只想连接到本地tnsnames.ora文件(称为tnsentry)引用的数据库,您可以执行以下操作:
conn = cx_Oracle.connect(user, pwd, tnsentry)
OR
conn = cx_Oracle.connect("user/pwd@tnsentry")
答案 1 :(得分:0)
我的问题最终是与Cx_oracle一起使用pyinstaller。我从我的python脚本创建了一个可执行文件,结果发现pyinstaller包含了一个OCI.dll文件。一旦我改变Pyinstaller以删除该文件,其他系统上的所有内容都与可执行文件连接正常。
此处提供更多信息:https://mail.python.org/pipermail/tutor/2014-December/103608.html
^^在上面的例子中,他正在添加一个.dll文件,但我发现我的工作是删除OCI.dll文件并忽略他正在谈论的另一个
如何改变pyinstaller:https://pythonhosted.org/PyInstaller/#using-spec-files