我有这条线工作正常:
c.execute('select cleanseq from cleanseqs WHERE newID="%s"'%name)
但我想使用 SQLite 参数替换而不是字符串替换(因为我看到here http://docs.python.org/library/sqlite3.html这更安全)。
这是我的(失败的)尝试:
t = (name,)
c.execute('select cleanseq from cleanseqs WHERE newID="?"',t)
但这行返回:
'绑定数量不正确
提供。当前语句使用
0,并且提供了 1 个。
所以我的声明的左边部分不起作用。我提供了一个绑定(名称,以 t 表示),但似乎问号 (?) 没有被解析。如果我删除 ? 周围的引号,它就会起作用。但我希望这些引号保留在那里,因为我记得在某些情况下我需要它们。
所以问题是:如何转换这一行:
c.execute('select cleanseq from cleanseqs WHERE newID="%s"'%name)
对于像我这样的人发现了这个帖子,并且因为人们忽略了这样一个事实而感到非常沮丧:有时你不能忽略引号(因为你使用的是 LIKE 命令),你可以通过执行以下操作来解决此问题:
var = name + "%"
c.execute('SELECT foo FROM bar WHERE name LIKE ?',(var,))
这将允许您在这种情况下替换通配符。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)