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

SQLite预编译语句中能否使用包含空格的命名参数?

结论

SQLite原生不支持带空格的命名参数名,你示例中给参数名加引号的写法无法被SQLite解析器识别,无法直接实现需求。

可行替代方案
  • 方案1:替换空格为下划线(最推荐)
    把SQL语句中的参数名和Python传入的字典键统一调整为下划线连接的格式,写法如下:
    cur.execute("insert into lang values (:foo_bar)", {'foo_bar': 'a'})
    
  • 方案2:使用位置占位符?
    如果不想修改原有字典的键名,可以改用位置占位符,按参数顺序传值即可,不需要绑定参数名:
    cur.execute("insert into lang values (?)", ('a',))
    
  • 方案3:加一层参数转换逻辑
    如果你必须保留字典中带空格的键名,可以自己实现简单的转换逻辑,自动把键中的空格替换为下划线,再和SQL语句中的参数名匹配:
    params = {'foo bar': 'a'}
    # 自动转换参数键
    converted_params = {key.replace(' ', '_'): value for key, value in params.items()}
    cur.execute("insert into lang values (:foo_bar)", converted_params)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 19:06:02