Cx_Oracle 和 Pyinstaller

Cx_Oracle and Pyinstaller

我已经使用 pyinstaller 打包了一个可执行文件,它在我的机器上运行良好。但是,当我共享可执行文件并尝试在另一台计算机上 运行 它并且应用程序尝试 运行 查询时,返回以下错误消息:

ora-12154 tns 无法解析指定的连接标识符

我假设指定的 oracle 服务未在目标机器上的 TNSNAMES.ORA 中列出。有没有人找到一种方法将其包含在 pyinstaller 可执行文件创建中,或者甚至是一个选项?

您不必将 TNSNAMES.ORA 与 cx_Oracle 一起使用,您可以指定完整的连接字符串。如果这对你有用,那将消除依赖性。

如果出于某种原因必须使用 TNSNAMES.ORA,那么您可以在应用程序中包含一个实用程序来查找文件并向其添加条目。 Py 安装程序确实允许您使用 --add-data 将文件与您的应用程序捆绑在一起,但我认为您无法使用此方法将 TNSNAMES.ORA 放在正确的位置(如果可以的话,它会覆盖现有文件可能会让您的用户感到厌烦)

使用下面的代码作为我的连接字符串的一部分在给出 ora-12154 错误消息的同一台机器上工作。

进口cx_Oracle

CONN_INFO = { 'host': 'xxx.xx.xxx.x', 'port': 12345, 'user': 'user_name', 'psw': 'your_password', 'service': 'abc.xyz.com', }

CONN_STR = '{user}/{psw}@{host}:{port}/{service}'.format(**CONN_INFO)

连接=cx_Oracle.connect(CONN_STR)