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

能否使用嵌套字典键作为SQL参数名称?

能否在SQL查询字符串中使用嵌套字典的键作为参数名称?

不行,原生Python DBAPI规范(比如psycopg2、MySQLdb这类数据库驱动遵循的标准)不支持%(country[id])s这种嵌套字典的参数引用语法。当你传入嵌套字典时,驱动只会解析第一层键名,无法识别嵌套层级的路径。

解决办法

1. 提前平展参数字典

把嵌套的字段提取出来,转换成单层字典再传入:

query = """
    INSERT INTO person 
        (id, name, country_id)
    VALUES 
        (%(id)s, %(name)s, %(country_id)s)
"""

person = {'id': 1, 'name': 'First Last', 'country': {'id': 1, 'name': 'USA'}}
# 提取嵌套的country.id作为单独参数
params = {
    'id': person['id'],
    'name': person['name'],
    'country_id': person['country']['id']
}
cursor.execute(query, params)

2. 使用字典解包简化写法

如果不想手动构建新字典,可以用字典解包结合单独字段的方式快速生成参数:

params = {**person, 'country_id': person['country']['id']}
cursor.execute(query, params)

补充说明

如果你的项目使用了ORM框架(比如SQLAlchemy),可以直接映射嵌套对象的属性,但原生DBAPI驱动仅支持单层键值对的参数传递,无法解析嵌套路径语法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 22:52:05