Ошибка при запросе к базе данных
В программе мне нужно делать выборку по столбцам для параметра. Не могу понять почему возникает ошибка. Не могли вы бы мне подсказать.
Traceback (most recent call last):
File "F:\bot_zadach\db.py", line 222, in <module>
sql_fetch_zad(con,spis)
File "F:\bot_zadach\db.py", line 216, in sql_fetch_zad
cursorObj.execute('SELECT "1za", "2za", "3za", "4za", "5za", "6za", "7za", "8za", "9za", "10za" FROM
users WHERE id = ?', spis )
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 9 supplied.
Вот код для получения выборки для базы данных:
def sql_fetch_zad(con, spis): #выборка данных для списка участников
cursorObj = con.cursor()
cursorObj.execute('SELECT "1za", "2za", "3za", "4za", "5za", "6za", "7za", "8za", "9za", "10za" FROM users WHERE id = ?', spis )
rows = cursorObj.fetchall()
print(rows)
kort = []
return kort
spis =('355656898')
sql_fetch_zad(con,spis)
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
В execute вторым параметром передается коллекция, что будет передана в запрос вместо binding-параметров (это символы ?).
У вас туда передано ('355656898'), а это станет просто строкой '355656898', т.к. скобки будут опущены. А т.к. строка является коллекцией, то она будет передана по одному символы в запрос sql (оттуда и ошибка про 9 значений).
Оберните строку в кортеж, добавив запятую (это создает кортеж на 1 элемент)
spis = ('355656898',)
# ^^^
Или оберните в список, так, думаю, нагляднее будет:
spis = ['355656898']