Как я могу выбрать из sqlite3_table ГДЕ столбец_имя в кортеже переменной? - PullRequest
1 голос
/ 09 апреля 2020

У меня есть этот кортеж:

topics = ('sport', 'math', 'science', 'literature')

Этот topics кортеж меняется для каждого пользователя (его длина также изменяется)

Как выбрать из таблицы sqlite3 только те строки, где значение их topic столбца равно одному из значений кортежа тем?

Я пытался использовать эту команду, но она не работала:

conn = sqlite3.connect('questions_stack.db')
c = conn.cursor()
c.execute("""SELECT * FROM questions WHERE topic IN ?""", subject_tuple)

Можно ли выбрать из таблицы, например что если длина кортежа topics меняется каждый раз и не является постоянной?

Я бы очень признателен, если бы вы могли мне помочь :) Заранее спасибо!

1 Ответ

1 голос
/ 09 апреля 2020

Вам нужно посчитать, сколько значений в списке, и сгенерировать соответствующие заполнители.

Что-то вроде:

conn = sqlite3.connect('questions_stack.db')
c = conn.cursor()
binds = ",".join("?" * len(subject_tuple))
sql = '''select * from questions where topic in ({})'''.format(binds)
cur.execute(sql, subject_tuple)
...