簡體   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