Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Значение ячейки базы данных

многабукаф Знаток (390), на голосовании 1 месяц назад
Здравствуйте!
Запрос
print(cursor.execute("SELECT posting_number FROM BAZA WHERE id=?", '9').fetchone()[0]) - работает
когда запрос принимает вид
print(cursor.execute("SELECT posting_number FROM BAZA WHERE id=?", '10').fetchone()[0]) появляется ошибка
ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 2 supplied.
в базе содержится 15 строк...
подскажите пожалуйста что не так и как исправить.
Голосование за лучший ответ
Александр Лонберг Мыслитель (9175) 2 месяца назад
Я не имею представления что эта за база и движок, но судя по стандартной sqlite3
https://docs.python.org/3/library/sqlite3.html#sqlite3.Cursor.execute
... вторым параметром должна быть последовательность, и строка '10' вызывает ошибку.
Надо либо кортеж, либо просто список
 # с условной запятой
cursor.execute(" ... ", ('10',))
# или
['10']
... строка '10' разделилась на '1' и '0', а запрос содержит один '?' параметр
многабукафЗнаток (390) 2 месяца назад
Работают оба варианта. выбрал вариант ['10'], т.к. в цикле будет короче [a]
СПАСИБО БОЛЬШОЕ!!
Александр Лонберг Мыслитель (9175) многабукаф, Часто вместо списка применяют именно кортежи '(value,)', даже несмотря на условные запятые, если элемента два, то уже последняя запятая не нужна '(value1, value2)'. Я так понимаю что для кортежей требуется меньше выделения памяти, так как он не изменяем в отличие от более сложной реализации изменяемых списков.
Похожие вопросы