Использование оператора 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)+"'"+")