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

Python使用psycopg2连接PostgreSQL报TypeError错误如何解决

问题原因及解决方案

你的报错是由两处代码错误共同导致的,直接对照修改即可:

1. 配置读取逻辑变量引用错误

你在config.py的循环遍历配置项时,错误引用了整个配置列表,而非当前遍历的单个配置项:
原错误代码:

for config_param in config_params:
    # get options key and value
    key = config_params[0]
    value = config_params[1]

这里config_params是所有配置项组成的列表,每次取config_params[0]得到的是第一个配置项的元组('host', 'localhost'),导致字典的键变成了元组而非字符串,自然会触发connect() keywords must be strings报错。
修复后代码:

for config_param in config_params:
    # 取当前遍历的单个配置项的键和值
    key = config_param[0]
    value = config_param[1]

2. 配置文件路径拼接错误

你在config.py中定义了get_project_root()获取项目根路径,但拼接配置文件路径时没有使用,直接写了相对路径'config/' + config_db,当运行入口main.py时,工作目录和预期不一致,会导致程序找不到database.ini文件,config函数直接返回None,触发connect() argument after ** must be a mapping, not NoneType报错。
修复后路径拼接逻辑:

def config(config_db):
    section = 'postgresql'
    # 用项目根路径拼接配置文件路径,避免相对路径的工作目录问题
    config_file_path = get_project_root() / 'config' / config_db

验证修复

修改完以上两处后重新运行main.py,即可正常读取配置连接数据库返回查询结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 04:39:03