【发布时间】:2009-06-17 07:18:25
【问题描述】:
我的这条线可以正常工作:
c.execute('select cleanseq from cleanseqs WHERE newID="%s"'%name)
但我想使用 SQLite 参数替换而不是字符串替换(因为我看到 here 这样更安全)。
这是我的(失败的)尝试:
t = (name,)
c.execute('select cleanseq from cleanseqs WHERE newID="?"',t)
但是这一行返回:
'绑定数不正确 提供。当前语句使用 0,提供了 1 个。'
所以我的陈述的左边部分不起作用。我提供了一个绑定(名称,在 t 中),但似乎没有解析问号 (?)。如果我删除 ? 周围的引号,它会起作用。但我希望引号保留在那里,因为我记得在某些情况下我需要它们。
所以问题是:如何转换这一行:
c.execute('select cleanseq from cleanseqs WHERE newID="%s"'%name)
【问题讨论】:
-
使用参数很棒,不仅更安全,而且速度更快。在这里阅读:stackoverflow.com/questions/904796/…