@andishub

В чем заключается ошибка и как ее исправить?

Здравствуйте! Я создаю запрос в базу данных, где достаю все модели кроссовок, чтобы потом эту модель проверить на наличие ее у человека. Вот запрос:

for i in cursor3.execute("SELECT * FROM sneakers WHERE rarity = 'Common' ORDER BY RANDOM() LIMIT 1"):
	random_sneakers = list(i)
        print(random_sneakers[0]) #вывод: Converse All Star

cursor2.execute("SELECT sneakers_model FROM user_inventory WHERE sneakers_model = ?", (random_sneakers[0]))
if cursor2.fetchone() is None:
	print("У вас нет такой модели!")

else:
	print("У вас уже есть подобная модель!")

Ошибка:
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 17 supplied.

Кроссовки: Converse All Star
  • Вопрос задан
  • 144 просмотра
Решения вопроса 2
sergey-gornostaev
@sergey-gornostaev Куратор тега Python
Седой и строгий
Ошибка в забытой запятой.
Ответ написан
Комментировать
Vindicar
@Vindicar
RTFM!
Дополню ответ Сергей Горностаев
cursor2.execute("SELECT sneakers_model FROM user_inventory WHERE sneakers_model = ?", (random_sneakers[0]))

А надо
cursor2.execute("SELECT sneakers_model FROM user_inventory WHERE sneakers_model = ?", (random_sneakers[0],))

Без запятой у тебя просто строка передаётся, и поэтому функция каждый символ считает за отдельное значение. Вот и получается 17 символов в строке = 17 значений, а место одно.
С запятой ты передаёшь кортеж из одной строки. Одна строка - одно место.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы