You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Python连接DB2数据库出现unhashable type: 'list'错误求助

错误原因
  • 最可能的触发点是代码中config.get()的第一个参数conn_type为列表类型:configparser的section查询基于字典实现,字典键必须是可哈希类型,列表属于不可哈希类型,传入后直接触发unhashable type: 'list'报错。
  • 次要可能:配置文件中同一个section下存在重复的配置键,导致config.get()返回列表类型的配置值,后续传入连接逻辑时触发报错。
解决方案
  • 第一步:确认conn_type变量类型为字符串,匹配配置文件中实际存在的section名称,可在调用config.get()前添加调试代码确认:
print(type(conn_type), conn_type)
# 示例正确赋值:conn_type = "db2_prod" 对应配置文件中的[db2_prod] section
  • 第二步:校验配置文件合法性,确认同一个section下没有重复的配置项(如重复的server_name、user等键),同时打印所有读取到的配置值确认类型为字符串:
print(config.sections()) # 确认读取到目标section
print(type(server_name), server_name)
print(type(database), database)
print(type(username), username)
print(type(password), password)
  • 第三步:优化连接调用方式,避免字符串拼接出错,可改用关键字参数调用connect方法,逻辑更清晰:
conn = ibm_db_dbi.connect(
    database=database,
    hostname=server_name,
    uid=username,
    pwd=password
)

如果要保留DSN字符串的写法,可改用更安全的格式化方式:

dsn = "Server={};Database={};UID={};PWD={};".format(server_name, database, username, password)
conn = ibm_db_dbi.connect(dsn)

内容的提问来源于stack exchange,提问作者sandy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 17:00:04