使用 python 与 securityMechanism=13 连接 db2
Posted
技术标签:
【中文标题】使用 python 与 securityMechanism=13 连接 db2【英文标题】:connect db2 using python with securityMechanism=13 【发布时间】:2020-07-01 12:06:13 【问题描述】:我正在尝试使用 python 连接 db2,但我不知道如何正确设置 securityMechanism=13 属性,您能告诉我该怎么做吗?
import jaydebeapi
conn_src = jaydebeapi.connect(
'com.ibm.db2.jcc.DB2Driver',
'jdbc:db2://host:port/dbname',"encryptionAlgorithm":"2",'securityMechanism':'13', 'user':'username',"password":'pass','',
)
cursor=conn_src.cursor()
错误信息:
com.ibm.db2.jcc.am.SqlExceptionPyRaisable: com.ibm.db2.jcc.am.SqlException:[jcc][t4][10441][12439][3.69.66] 加密算法只能用 securityMechanism 设置 ENCRYPTED_PASSWORD_SECURITY 和 ENCRYPTED_USER_AND_PASSWORD_SECURITY。 ERRORCODE=-4450,SQLSTATE=null
我很乐意使用 ibm_db,但我没有找到设置 securityMechanism=13 的方法。
【问题讨论】:
请编辑您的问题以添加更多事实。哪个 Db2 平台(z/os、i 系列、linux/unix/windows)托管您尝试连接的数据库?如何在目标环境上配置身份验证?您使用的是哪个 jdbc 驱动程序+版本?为什么不能使用 CLIDRIVER 和 ibm_db ?请附上确切错误消息的详细信息。 请编辑您的问题以回答所有所要求的说明 对于在 Linux/Unix/Windows 上运行的 Db2 服务器,带有 clidriver(或 IBM 提供的其他等效项)的 pythonibm_db
模块支持具有与该值匹配的 AUTHENTICATION 参数的连接字符串Db2 实例上的参数。
【参考方案1】:
尝试通过 Jaydebeapi 连接时收到相同的错误,但是当我尝试使用 ibm_db_dbi 连接时,它可以正常工作。
以下脚本运行良好,无需明确提及“securityMechanism”。
#Header
from ibm_db_dbi import connect
#Connection string
conn_src = connect("DATABASE=<DB_Name>;
HOSTNAME=<Host_Name>;
PORT=50000;PROTOCOL=TCPIP;
UID=<username>;PWD=<password>;", "", "")
【讨论】:
OP 担心明确声明 securityMechanism=13,所以如果您能详细说明为什么不需要这种方式会很好。以上是关于使用 python 与 securityMechanism=13 连接 db2的主要内容,如果未能解决你的问题,请参考以下文章
python编程技巧之python多任务并发,并行与线程介绍与使用(详细版!!!)