В вашем выражении sql есть только 1 ?
заполнитель, но вы хотите передать список значений, и это синтаксически неверно. Вы могли бы использовать:
cursor.execute("SELECT * FROM basicinfo WHERE id IN ?", ("(1, 2)",))
, но это привело бы к следующему выражению sql:
SELECT * FROM basicinfo WHERE id IN '(1, 2)'
, что вам не нужно, поскольку заполнитель ?
будет заменен на строковый литерал '(1, 2)'
, а не список значений.
В этом случае вы можете использовать оператор LIKE
:
cursor.execute("SELECT * FROM basicinfo WHERE ',' || ? || ',' LIKE '%,' || id || ',%' ", ("1,2",))
Вам потребуется удалить скобки и пробелы из списка значений, разделенных запятыми.