使用 python api ibm_db 连接到 IBM DB2 on Cloud

Connect to IBM DB2 on Cloud using python api ibm_db

能否告诉我如何使用 python 连接到 IBM Cloud 上的 DB2?

我已经尝试了以下步骤。

  1. 使用 pip install ibm_db
  2. 安装 ibm_db
  3. 在 IBM 云上创建了免费层 Db2 服务
  4. 生成的服务凭据密钥
  5. 正在尝试使用从服务凭据密钥中提取的凭据详细信息(数据库、主机、端口、用户 ID 和密码)与数据库建立连接
import ibm_db

print("Creating connection.......")

conn_string = "DATABASE=bludb;HOSTNAME=54a2f15b-5c0f-46df-8954-7e38e612c2bd.c1ogj3sd0tgtu0lqde00.databases.appdomain.cloud;PORT=32733;PROTOCOL=TCPIP;UID=<userId>;PWD=<password>;"

conn = ibm_db.connect(conn_string,"","")
if conn:
    print("Connection ...... [SUCCESS]")
else:
    print("Connection ...... [FAILURE]")

我收到以下错误消息:

SQLCODE=-30082n: [IBM][CLI Driver] SQL30082N Security processing failed with reason "17" ("UNSUPPORTED FUNCTION"). SQLSTATE=08001

有一个名为 ibm_db 的 python 包,this link or (cited in the first one) this one 有帮助吗?

您似乎在 new Db2 on Cloud lite plan 上使用非标准端口并强制执行 SSL。当您使用 Python 驱动程序连接到 Db2 并使用 SSL 时,您必须添加 SECURITY=SSL 属性,例如:

conn_string = "DATABASE=bludb;HOSTNAME=yourhostname;PORT=<port>;PROTOCOL=TCPIP;UID=<userId>;PWD=<password>;SECURITY=SSL"

我认为最简单的方法是使用 SQL Magic。这样,您只需在查询

之前添加 %sql 即可键入 SQL 语句

首先安装软件包

!pip install sqlalchemy==1.3.9
!pip install ibm_db_sa

然后,

%load_ext sql

最后,运行 以下代码替换您的用户名、密码、主机名和 SSL。您可以在您的 IBM DB2 中的凭据下找到这些。

%sql ibm_db_sa://my-username:my-password@hostname:port/BLUDB?security=SSL 

现在您可以 运行 任何 SQL 之前使用 %sql 或 %%sql 如果整个单元格将成为 SQL。示例:

%sql SELECT * FROM TABLENAME;

%%sql 
SELECT *
FROM TABLENAME;