«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему при использовании SQLite3 в Python возникает «неправильное количество предоставленных привязок» при использовании подстановки параметров «?»?

Почему при использовании SQLite3 в Python возникает «неправильное количество предоставленных привязок» при использовании подстановки параметров «?»?

Опубликовано 7 ноября 2024 г.
Просматривать:269

When Using SQLite3 in Python, Why \

Загадка подстановки параметров SQLite

При попытке защититься от SQL-инъекций разработчик столкнулся с ошибкой при использовании SQLite3 с Python 2.5. При использовании рекомендуемого знака "?" подстановкой параметров для предотвращения инъекций, они столкнулись со следующей дилеммой:

sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 1, and there are 8 supplied.

Похоже, что эта проблема возникла из-за первоначального создания базы данных, которая содержала восемь привязок. Однако использование менее безопасной замены «%s» для каждого имени элемента решило проблему.

for item in self.inventory_names:
    self.cursor.execute("SELECT weight FROM Equipment WHERE name = '%s'" % item)
    self.cursor.close()

Решение этого недоумения заключается в понимании того, что метод Cursor.execute() требует последовательность в качестве второго параметра. В этом случае разработчик предоставил строку длиной восемь символов. Чтобы исправить это, необходимо реализовать следующую модификацию кода:

self.cursor.execute("SELECT weight FROM Equipment WHERE name = ?", [item])

В соответствии с этим параметром спецификации, проблема может быть эффективно решена, обеспечивая безопасное и эффективное извлечение данных из SQLite3.

Заявление о выпуске Эта статья перепечатана по адресу: 1729322955. В случае каких-либо нарушений, пожалуйста, свяжитесь с [email protected], чтобы удалить ее.
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3