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

如何在sqlite3中通过传入变量查询指定数据

  • 现有代码未正确实现参数传入SQL的逻辑,SELECT语句中的{name}缺少f-string前缀标识,不会被替换为实际传入的参数值
  • 直接拼接变量到SQL字符串存在SQL注入风险,且字符串类型参数未加引号的情况下会触发SQL语法错误
  • 查询类操作不需要调用conn.commit(),仅增删改操作需要提交事务
  • conn.close后缺少括号,不会实际执行关闭数据库连接的操作

正确实现代码

import sqlite3

def getName(name):
    # 数据库连接放到函数内部,避免多次调用函数时连接提前关闭报错
    conn = sqlite3.connect('database.db')
    c = conn.cursor()
    # 使用?作为参数占位符,参数放到execute的第二个元组参数中
    data = c.execute("SELECT * FROM data WHERE Name=?", (name,)).fetchall()
    print(data)
    conn.close()

getName('John')

上面的实现用sqlite3官方推荐的参数化查询方案,自动处理参数转义和类型适配,既规避了SQL注入风险,也不需要手动处理字符串拼接的引号问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:06:00