[英]How to fix SQLAlchemy connection problem: 'Connection info needed in SQLAlchemy format' when connecting to IBM db2 server hosted on IBM Cloud
[英]SQLAlchemy connection error with Db2 on IBM Cloud
我一直在嘗試使用提供的憑據連接到托管在 IBM 雲上的 IBM DB2 服務器。 我按照說明進行操作,但收到以下錯誤:
SQLAlchemy 格式所需的連接信息,例如:postgresql://username:password@hostname/dbname 或現有連接:dict_keys([]) 無法加載插件:sqlalchemy.dialects:ibm_db_sa SQLAlchemy 格式所需的連接信息,例如: postgresql://username:password@hostname/dbname 或現有連接:dict_keys([])
這是我使用的代碼:
# Remember the connection string is of the format:
# %sql ibm_db_sa://my-username:my-password@my-hostname:my-port/my-db-name
# Enter the connection string for your Db2 on Cloud database instance below
# i.e. copy after db2:// from the URI string in Service Credentials of your Db2 instance. Remove the double quotes at the end.
%sql ibm_db_sa://user:password@dashdb-txn-sbox-yp-dal09-04.services.dal.bluemix.net:50000/BLUDB
如果您能幫助我解決此錯誤,我將不勝感激。
查看關於將無服務器和 Cloud Foundry 結合起來進行數據檢索和分析的 IBM Cloud 解決方案教程。 它使用 Db2, 后端是用 Python 和 SQLAlchemy 編寫的。 相關部分從第 78 行開始:
if dbInfo['port']==50001:
# if we are on the SSL port, add additional parameter for the driver
app.config['SQLALCHEMY_DATABASE_URI']=dbInfo['uri']+"Security=SSL;"
else:
app.config['SQLALCHEMY_DATABASE_URI']=dbInfo['uri']
該代碼從 Cloud Foundry 環境中的憑據變量讀取 URI。 如果端口是 50001,則它使用 SSL/TLS 來加密連接,您需要將Security=SSL
添加到該 URI。
此外,請確保您的代碼安裝了 用於 SQLAlchemy的Db2 模塊。 有關依賴項,請參閱requirements.txt 。
你可以試試這個:
!pip install --upgrade ibm_db
!pip install --upgrade ibm_db_sa
!pip install --upgrade SQLAlchemy
import ibm_db
import ibm_db_sa
import sqlalchemy
%load_ext sql
進而:
%sql ibm_db_sa://user:password@dashdb-txn-sbox-yp-dal09-04.services.dal.bluemix.net:50000/BLUDB
我有類似的問題,由於問題的時間,我期待我的回答可以幫助現在有同樣問題的其他人......
在運行 SQL pip install --upgrade 'SQLAlchemy<1.4' 之前嘗試安裝 SQLAchemy 1.4 版
請務必按照以下方式安裝 ibm_db(它可能會有所幫助)!pip install --force-reinstall ibm_db ibm_db_sa
!pip 卸載 sqlalchemy==1.4 -y && pip install sqlalchemy==1.3.24
%load_ext sql
在運行查詢之前使用它,您的查詢將起作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.