繁体   English   中英

如何在 python 中使用 SQLAlchemy 修复与 db2 的连接?

[英]How do I fix connection to db2 using SQLAlchemy in python?

我在使用 SQLAlchemy 连接到 IBM Db2 on Cloud 中的数据库 BLUDB 时遇到问题。 这是我一直使用的代码,它始终运行良好:

%sql ibm_db_sa://user:pswd@some-host.services.dal.bluemix.net:50000/BLUDB

但现在我收到这个错误:

(ibm_db_dbi.ProgrammingError) ibm_db_dbi::ProgrammingError: Exception('[IBM][CLI Driver] SQL1042C 发生意外的系统错误。SQLSTATE=58004\\r SQLCODE=-1042')(此错误的背景:http://sqlalche .me/e/13/f405) 需要 SQLAlchemy 格式的连接信息,例如:postgresql://username:password@hostname/dbname 或现有连接:dict_keys([])

这些包一如既往地加载:

import ibm_db
import ibm_db_sa
import sqlalchemy
from sqlalchemy.engine import create_engine

我查看了ibm上的python db2 文档sqlalchemy 错误消息,但找不到任何地方。

我在本地的 Jupyterlab 工作。 我最近重新安装了 Python 和 Jupyterlab。 这是本地唯一改变的事情。

我能够在 kaggle 和认知课上成功地在云端运行笔记本。 我还可以使用本地笔记本通过 python 连接和查询 sqlite3,而不会出现问题。

所有 ibm 模块和版本号在安装前后都相同。 我使用requirements.txt进行重新安装。

在 db2diag.log 中,这里是最后两个条目:

2020-11-05-14.06.47.081000-300 I13371F372 LEVEL:警告PID:17500 TID:7808 PROC:python.exe INSTANCE:NODE:000 HOSTNAME:DESKTOP-6FFlex0Pgin, FSKTOP-6FFlex0Pgin, USKTOP-DUIDsqDBFOE7 :20 DATA #1: String with size, 43 bytes loadAuthidMapper: GetModuleHandle rc = 126

2020-11-05-14.13.49.282000-300 I13745F373 LEVEL:警告PID:3060 TID:12756 PROC:python.exe INSTANCE:NODE:000 HOSTNAME:DESKTOP-6IDFF6xPlexPlugin,FSKUNCTOPDUIDFF6sqDBEMessage, :20 DATA #1: String with size, 43 bytes loadAuthidMapper: GetModuleHandle rc = 126

我认为这将归结为新版本的 Python 和 pip 缓存。

你是从哪个版本迁移过来的,现在是哪个版本。 这是 Python 2 到 Python 3 的变化吗? 更改版本时,通常您需要清理 pip install 所有组件,但 pip 确实使用缓存。 即使对于可能需要编译的组件,并且很有可能正在编译 Db2 组件。

所以你需要做的是重新安装依赖项

pip install --no-cache-dir

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM