繁体   English   中英

Python 中的 IBM Db2 dsdriver 环境变量

[英]IBM Db2 dsdriver environment variables in Python

操作系统:RHEL 7.9 构建:ob_1_3_0

我已将 dsdriver 和 clidriver 下载到/opt/IBM 我跑. ./db2cli . ./db2cli位于/opt/IBM/dsdriver以设置环境变量,以便import ibm_db在 python 中工作。

但是,当在外部(不是从 CLI)运行我的 python 脚本时,该过程失败,因为它找不到libdb2.so.1

因为在 Python 中设置环境变量来纠正这一点似乎没有效果( os.environ["VAR"]="value"os.system('source /opt/IBM/dsdriver/db2profile')没有效果),我在/usr/lib64中创建了指向库的符号链接。 但是,该程序后来遇到了这个问题:

SQL10007N Message "0" could not be retrieved. Reason code: "3". SQLCODE=-1042

运行pip3 show ibm_db产生以下结果:

Name: ibm-db
Version: 3.1.1
Summary: Python DBI driver for DB2 (LUW, zOS, i5) and IDS
Home-page: http://pypi.python.org/pypi/ibm_db/
Author: IBM Application Development Team
Author-email: opendev@us.ibm.com
License: Apache License 2.0
Location: /usr/local/lib64/python3.6/site-packages/ibm_db-3.1.1-py3.6-linux-x86_64.egg
Requires:

我试图弄清楚如何让 Python 设置所有必要的变量,以便 Db2 库可以正常工作。

仅在需要时使用 dsdriver

  • 编译(例如使用 C 或 C++ 等)直接使用 CLI API 的代码,或
  • 使用 jdbc/SQLJ,或
  • 您的代码依赖于已编目的数据源,或者
  • 当您想使用 db2 CLP 和其他客户端工具时。

对于所有简单的用例,仅使用 clidriver,默认情况下,python ibm_db 模块的安装会自动下载 clidriver 并将其安装到 python 站点包目录树中。 当您允许自动安装 clidriver 时,您可以使用命令pip show ibm_db查看安装位置并检查目录位置的输出。

对于最简单的用例,允许pip install ibm_db将 clidriver 安装到默认位置(在站点包树下)。 对于手动安装任何驱动程序,在安装 ibm_db 之前,根据您的需要选择最合适的位置,然后在安装 ibm_db 之前将 IBM_DB_HOME 导出到该位置。

例如,如果主机名上的单个用户将使用 python,那么您可以在/home/$USER中的任何位置安装 clidriver,当然如果同一主机名上的多个用户将运行 python,则手动将驱动程序安装到合适的位置(例如在/opt下),除非驱动程序本身具有默认位置(在这种情况下使用该默认位置)。

对于 RHEL 和其他 Linux 发行版,为确保运行 python 的用户能够加载 Db2 共享库,您应该安排编辑 shell 启动文件(例如 .bashrc)以包括:

export LD_LIBRARY_PATH=/path/to/clidriver/lib:$LD_LIBRARY

其中 /path/to/clidriver/lib(或适当的 lib64)是包含 libdb2.so.1 文件的目录的绝对路径。 当使用 dsdriver 而不是 clidriver 时,也需要进行更改,但这次目录路径必须是包含 libdb2.so.1 文件的 dsdriver lib/lib64 目录之一。 相关的目录权限和所有权也必须兼容,即必须允许读取和执行。

如果您希望 python ibm_db 为多个用户运行,您可以通过编辑 /etc/ld.so.conf 或在 /etc/ld.so.conf.d 中创建文件或其他方式使此 LD_LIBRARY_PATH 更改永久(对所有用户)您的发行版为此目的提供的方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM