SQLAlchemy与IBM云上的Db2连接时出错

8zzbczxx  于 2022-11-07  发布在  DB2
关注(0)|答案(4)|浏览(269)

我一直在尝试使用提供的凭据连接到托管在IBM云上的IBM DB2服务器。我按照说明操作,但收到以下错误:
需要SQLAlchemy格式的连接信息,例如:postgresql://用户名:密码@主机名/数据库名或现有连接:dict_keys([])无法加载插件:sqlalchemy.方言:ibm_db_sa需要SQLAlchemy格式的连接信息,例如:postgresql://用户名:密码@主机名/数据库名或现有连接:dict键([])
下面是我的代码,我使用:


# 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

如果您能帮助我解决这个错误,我将不胜感激。

z3yyvxxp

z3yyvxxp1#

请查看有关Combining serverless and Cloud Foundry for data retrieval and analytics的IBM Cloud解决方案教程。它使用Db2和backend is written in Python and 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环境中的credentials变量中读取URI。如果端口为50001,它将使用SSL/TLS对连接进行加密,您需要将Security=SSL添加到该URI。
此外,请确保您的代码安装了Db2 modules for SQLAlchemy。有关依赖项,请参阅requirements.txt

xienkqul

xienkqul2#

您可以尝试以下操作:

!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
sqxo8psd

sqxo8psd3#

我也遇到过类似的问题。以下是对我有效的方法:
在使用以下命令运行SQL之前,请尝试安装SQLAchemy 1.4版
pip install --upgrade 'SQLAlchemy<1.4'
请确保按如下方式安装IBM DB2 Python库:
!pip install --force-reinstall ibm_db ibm_db_sa

ruoxqz4g

ruoxqz4g4#

!pip卸载SQL炼金术==1.4 -y && pip安装SQL炼金术==1.3.24
%load_ext SQL语句
请在运行查询之前使用此选项,这样查询就可以正常工作。

相关问题