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

Ответы на вопрос(1)

Ваш ответ на вопрос