Python+SQLAlchemy连接IBM DB2报错 提示需SQLAlchemy格式连接信息
解决方法
本次报错核心为依赖版本不兼容,你当前安装的sqlalchemy、ibm_db_sa、ipython-sql三者版本存在适配冲突,旧版本ipython-sql尝试修改SQLAlchemy内部的不可变字典对象,触发了不支持元素删除的报错,按以下步骤操作即可解决:
步骤1:卸载现有冲突依赖
!pip uninstall -y sqlalchemy ibm_db ibm_db_sa ipython-sql
步骤2:安装经过验证的兼容版本组合
!pip install sqlalchemy==1.4.47 ibm_db==3.2.0 ibm_db_sa==0.3.9 ipython-sql==0.4.1
步骤3:重新加载扩展并测试连接
两种连接方式可选,推荐第二种兼容性更强:
方式1:直接使用魔法命令连接
%load_ext sql %sql ibm_db_sa://jqg6xxxx:r9C98t4TY81xxxxx@fbd88901-ebdb-4a4f-a32e-9822b9fb237b.c1ogj3sdxxxxxtu0lqde00.databases.appdomain.cloud:32731/bludb?security=SSL
方式2:先创建SQLAlchemy引擎再传入魔法命令
from sqlalchemy import create_engine # 替换为你自己的连接字符串 engine = create_engine("ibm_db_sa://jqg6xxxx:r9C98t4TY81xxxxx@fbd88901-ebdb-4a4f-a32e-9822b9fb237b.c1ogj3sdxxxxxtu0lqde00.databases.appdomain.cloud:32731/bludb?security=SSL") # 先测试原生连接是否正常 with engine.connect() as conn: res = conn.execute("SELECT CURRENT_DATE FROM SYSIBM.SYSDUMMY1") print("连接成功,当前数据库日期:", res.fetchone()[0]) # 绑定到sql魔法命令 %load_ext sql %sql $engine
额外校验点
- 确认账号密码、实例地址、端口、默认数据库名bludb没有输入错误
- 确认你的网络可以访问IBM云数据库的32731端口,没有被本地防火墙或公司内网拦截
内容的提问来源于stack exchange,提问作者Will Pimentel
相关产品推荐
相关产品推荐

