具有多个Oracle客户端版本的cx_Oracle

格雷格

我正在运行Python 2.7,并在Linux 64位OS上使用cx_Oracle。我需要能够针对11.2或12.1 Oracle客户端运行,因为我不确定哪个客户端将安装在部署的目标上。我知道有针对每个Oracle客户端构建的cx_Oracle。我如何确定该应用程序可以运行?我应该提到我正在使用pyinstaller打包应用程序。是否有针对两个Oracle客户端构建的cx_Oracle版本,或者我是否需要拥有两个不同版本的应用程序……一个用于11g,一个用于12c客户端?

安东尼·图宁加

尽管从理论上讲您应该能够构建Oracle 11g版本的cx_Oracle并将其与Oracle 11g和Oracle 12c客户端一起使用,但我不建议这样做。如果您能够说服用户使用Oracle 12c Instant Client,那将是最简单的。该客户端可以轻松访问11g和12c数据库。但是,如果这不可能,则另一个选择如下:

1)编译11g和12c的cx_Oracle,并将两个副本都放置在名为(例如)cx_Oracle_11g.so和cx_Oracle_12c.so的安装中。

2)使用如下代码动态导入cx_Oracle:

for version in ("11g", "12c"):
    fileName = os.path.join(installDir, "cx_Oracle_%s.so" % version)
    try:
        module = imp.load_dynamic("cx_Oracle", fileName)
        break
    except ImportError:
        pass

3)以与以前相同的方式在需要的地方使用动态导入的模块。由于动态加载的模块名为cx_Oracle,因此您应该能够以其他方式将其导入其他代码,它将找到您动态加载的模块。

4)使用cx_Oracle 6.x,它同时支持任何Oracle Client 11.2、12.1和12.2。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何使用pyinstaller构建cx_oracle应用程序以使用多个Oracle客户端版本?

在 ml-engine 中使用 cx_oracle 导致“无法加载 Oracle 客户端库”

Python 3.6,用于 64 位 Windows 上的 11g 客户端的 cx_oracle

Docker 上的 cx_Oracle:DPI-1047:无法加载 64 位 Oracle 客户端库:“libclntsh.so

cx_Oracle连接失败,并显示“ DPI-1047:无法找到64位Oracle客户端库”

使用即时客户端通过Python3(cx_Oracle)连接到Oracle数据库时,错误“ DPI-1047:无法找到64位Oracle客户端库”

任意选择在即时客户端上使用cx_Oracle失败

在cx_oracle上使用多个主机

在 cx_Oracle 中处理多个游标

使用python cx_Oracle,如何调用具有多个声明的DBMS_METADATA.SET_TRANSFORM_PARAM?

提供程序与Oracle客户端的版本不兼容

cx_oracle 6 for Oracle 12C版本错误

具有故障转移Oracle URL的Python cx_Oracle连接

SQL [Oracle]:计算具有相同客户端ID的先前记录的数量

哪些Windows版本具有NFS客户端?

为什么pyinstaller生成的cx_oracle应用程序可以在新的CentOS计算机上运行,而不能在安装了Oracle客户端的计算机上运行?

具有多个客户端名称的StackExchange.Redis

具有多个参数的SignalR客户端

具有多个参数的 Gatsby 客户端路由

具有多个客户端连接的signalR

具有多个客户端的Java Server-Client

具有多个客户端的服务器-JAVA

Oracle客户端,即时客户端和ODAC

ORA-01722:无效的数字-具有cx_Oracle的Python

Python cx_Oracle Insert Into 具有多列自动值的表 (1:,2: ... 100:)

卸载32位版本的Oracle客户端后,SSIS中的Oracle连接断开

oracle客户端版本可以优于Server版本吗?

如何修复:cx_Oracle.DatabaseError:DPI-1047:无法找到64位Oracle客户端库-Python

CX_Oracle CTE 执行