具有多个Oracle客户端版本的cx®Oracle

2024-04-23 08:10:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我运行的是Python2.7,并在linux 64位操作系统上使用cx®Oracle。我需要能够在11.2或12.1oracle客户机上运行,因为我不能确定哪个客户机将安装在部署的目标上。我知道有针对每个Oracle客户机构建的cx_Oracle。我怎样才能确保应用程序能正常工作?我应该提到我正在使用pyinstaller打包应用程序。是否有针对这两个Oracle客户机构建的cx®Oracle版本,或者我需要有两个不同版本的应用程序…一个用于11g,一个用于12c客户端?在


Tags: 版本应用程序客户端目标客户机linux部署oracle
1条回答
网友
1楼 · 发布于 2024-04-23 08:10:05

虽然从理论上讲,您应该能够构建一个oracle11g版本的cxu-Oracle,并将其与oracle11g和oracle12c客户端一起使用,但我不推荐它。如果您能够说服您的用户使用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)使用同时支持任何Oracle客户端11.2、12.1和12.2的cx®Oracle 6.x。在

相关问题 更多 >