【发布时间】:2012-12-24 02:25:27
【问题描述】:
我正在尝试弄清楚如何正确使用 WHERE _ IN _ 语句
定义:
c.execute('''CREATE TABLE IF NOT EXISTS tab (
_id integer PRIMARY KEY AUTOINCREMENT,
obj text NOT NULL
) ;''')
我正在尝试做这样的事情:
list_of_vars=['foo','bar']
statement="SELECT * FROM tab WHERE obj IN (?)"
c.execute(statement,"'"+"','".join(list_of_vars)+"'")
另外,我也试过这个,它直接评估为上述
statement="SELECT * FROM tab WHERE obj IN (?)"
c.execute(statement,"'foo','bar'")
我得到的错误是:
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 9 supplied
这给了我一个错误。当我这样做时,它可以工作,但不建议这样做,因为它容易受到 SQL 注入攻击。
statement="SELECT * FROM tab WHERE obj IN ("+"'"+"','".join(statement)+"'"+")
【问题讨论】: