【问题标题】:Connecting Python 3.x to Oracle DB将 Python 3.x 连接到 Oracle DB
【发布时间】:2019-03-27 04:51:54
【问题描述】:

我无法使用 python 3/cx_Oracle 连接到我们的企业 Oracle Db。

安装的是:

    python 3 -32 bit
    cx_Oracle
    Oracle Client 12.1.0.2.0

我的连接字符串尝试是:

    import cx_Oracle
    conn = cx_Oracle.connect(user='user', password='pwd', dsn='working_dsn')

我的 PATH 变量包括我的工作 Oracle 库的直接路径(使用 SQL Dev 工作

错误信息是:

     cx_Oracle.DatabaseError: DPI-1050: Oracle Client library is at version 0.0 but must be at version 11.2 or higher

我研究了 Orcale 安装说明,但没有找到连接的方法。我以前尝试过,但没有成功,我重新映像并重新安装了 Oracle,以确保只有一个版本的 Oracle,但仍然没有成功。我需要从 R 迁移到 Python,这是我需要进行切换的最后一块。我可以使用 JDBC driverclass/dbConnect 与 R 连接。

如果 cx_Oracle 不起作用,是否有其他选项可以从 Python3 连接到 Oracle?

有什么想法建议或可以看的地方吗?使用其他连接类型?

提前致谢。

【问题讨论】:

标签: python python-3.x windows pyodbc cx-oracle


【解决方案1】:

pip3 安装 cx_Oracle

第一种方法:

db = cx_Oracle.connect('root/root@localhost: 1523/orcl')

第二种方法:

db = cx_Oracle.connect('root/root@localhost: 1523/orcl')

第三种方法

makedsn(IP/HOST, PORT, TNSNAME)
dsn = cx_Oracle.makedsn('localhost','1523','orcl')
db = cx_Oracle.connect('root','root',dsn)

【讨论】:

  • pip3 install cx_Oracle==5.3
  • 有趣。我这样做了,我收到以下错误:Oracle home (C:\oracle64\instantclient-basiclite-nt-12.2.0.1.0.zip\instantclient_12_2) 不是指 10g、11g 或 12c 安装。这是否意味着我需要下载不同版本的 Oracle?
  • 你确定你的oracle客户端版本兼容吗?
  • 你的python是32位还是64位? python版本应该是3.6或者2.7。
  • 我正在使用 anaconda python 3.7 32 位
【解决方案2】:

您收到的错误表明您的计算机上安装了旧版本的 Oracle 客户端。在 PATH 环境变量的目录中搜索 OCI.DLL。如果您发现旧版本,则需要删除或重命名它 - 请注意,无论应用程序将文件放在那里,都将停止工作!

另一种可能性是转到命令提示符并执行以下操作

PATH=my_path_to_instant_client;%PATH%
python test_connect.py

最后,确保如果您的 Python 是 32 位,那么您的即时客户端安装也是如此,如果您的 Python 是 64 位,请确保您的即时客户端安装也是 64 位。

【讨论】:

  • 我试过这个但没有成功。哪个版本的 Instantclient 最好?也许我可以尝试重新安装
  • 即时客户端的版本无关紧要 - 只要它是正确的位(32 或 64)并且至少为 11.2。
猜你喜欢
  • 2020-04-11
  • 2019-12-26
  • 2020-04-08
  • 2021-11-23
  • 2021-07-15
  • 1970-01-01
  • 1970-01-01
  • 2012-01-06
  • 1970-01-01
相关资源
最近更新 更多