cx_Oracle 具有多个 Oracle 客户端版本
cx_Oracle with multiple Oracle client versions
我正在 运行ning Python 2.7 并且正在 linux 64 位 OS 上使用 cx_Oracle。我需要能够 运行 针对 11.2 或 12.1 Oracle 客户端,因为我无法确定哪个客户端将安装在已部署的目标上。我知道针对每个 Oracle 客户端构建了 cx_Oracle。我如何确定该应用程序可以正常工作?我应该提到我正在使用 pyinstaller 来打包应用程序。是否有针对两个 Oracle 客户端构建的 cx_Oracle 版本,或者我是否需要我的应用程序的两个不同版本...一个用于 11g,一个用于 12c 客户端?
虽然理论上您应该能够构建 cx_Oracle 的 Oracle 11g 版本并将其与 Oracle 11g 和 Oracle 12c 客户端一起使用,但我不推荐它。如果您能够说服您的用户使用 Oracle 12c 即时客户端,那将是最简单的。该客户端能够毫无困难地访问 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。
我正在 运行ning Python 2.7 并且正在 linux 64 位 OS 上使用 cx_Oracle。我需要能够 运行 针对 11.2 或 12.1 Oracle 客户端,因为我无法确定哪个客户端将安装在已部署的目标上。我知道针对每个 Oracle 客户端构建了 cx_Oracle。我如何确定该应用程序可以正常工作?我应该提到我正在使用 pyinstaller 来打包应用程序。是否有针对两个 Oracle 客户端构建的 cx_Oracle 版本,或者我是否需要我的应用程序的两个不同版本...一个用于 11g,一个用于 12c 客户端?
虽然理论上您应该能够构建 cx_Oracle 的 Oracle 11g 版本并将其与 Oracle 11g 和 Oracle 12c 客户端一起使用,但我不推荐它。如果您能够说服您的用户使用 Oracle 12c 即时客户端,那将是最简单的。该客户端能够毫无困难地访问 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。