使用SQLAlchemy连接到IBM DB2数据库



我正在尝试使用SQLAlchemy连接到基于云的IBM DB2数据库。使用基本的ibm_db python库可以工作:

connection_string = 'DRIVER={DB2};DATABASE=BLUDB;HOSTNAME=host.databases.appdomain.cloud;PORT=port;PROTOCOL=TCPIP;UID=user;PWD=pass;SECURITY=SSL;'
conn = ibm_db.connect(connection_string, '', '')

然而,尝试使用SQLAlchemy做同样的事情,连接部分只是挂起/超时

from sqlalchemy import create_engine
import ibm_db_sa
user = "user"
password = "pass"
host = "host.databases.appdomain.cloud"
port = "port"
database = "BLUDB"
db2_connection_string = (
f'db2+ibm_db://{user}:{password}@{host}:{port}/{database}'
':SECURITY=SSL'
)
engine = create_engine(db2_connection_string)
connection = engine.connect() # timeouts here

有什么建议吗?

只能使用这样的连接字符串:

db2_connection_string = (
f'db2://{user}:{password}@{host}:{port}/{database}'
':SECURITY=SSL;PROTOCOL=TCPIP;'
)

litats.ps中的这行代码是一个工作示例。代码来自这个IBM云解决方案教程,其中有一个Python应用程序,其中SQLAlchemy连接到云上的Db2。

作为备选方案,您还可以尝试ibm_db_sa作为驱动程序前缀而不是db2. 请确保导入了正确的模块(ibm_db、ibm_db_sa)。

您可以在这里找到如何使用驱动程序的所有信息:

https://github.com/ibmdb/python-ibmdb

确保使用conda或pip安装了ibm_dbibm_db_sa包。

如果你使用的是Python 3.7,你可能会发现这个问题

致意。