Warum wird bei der Verwendung von SQLite3 in Python die „Falsche Anzahl der bereitgestellten Bindungen' bei Verwendung der „?'-Parametersubstitution angezeigt?

Mary-Kate Olsen
Freigeben: 2024-10-19 15:30:03
Original
152 Leute haben es durchsucht

When Using SQLite3 in Python, Why

SQLite-Parametersubstitutions-Rätsel

Beim Versuch, sich vor SQL-Injections zu schützen, ist ein Entwickler bei der Verwendung von SQLite3 mit Python 2.5 auf einen Fehler gestoßen. Bei Verwendung des empfohlenen „?“ Nachdem sie Parameter ersetzt hatten, um Injektionen zu verhindern, standen sie vor dem folgenden Dilemma:

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

Dieses Problem schien auf die ursprüngliche Erstellung der Datenbank zurückzuführen zu sein, die acht Bindungen enthielt. Die Verwendung der weniger sicheren „%s“-Ersetzung für jeden Elementnamen löste das Problem jedoch.

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

Die Lösung dieser Verwirrung liegt darin, zu verstehen, dass die Cursor.execute()-Methode eine Sequenz als zweite benötigt Parameter. In diesem Fall stellte der Entwickler eine Zeichenfolge bereit, die zufällig acht Zeichen lang war. Um dies zu beheben, sollte die folgende Codeänderung implementiert werden:

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

Durch die Einhaltung dieser Parameterspezifikation kann das Problem effektiv behoben werden, was einen sicheren und effizienten Datenabruf von SQLite3 ermöglicht.

Das obige ist der detaillierte Inhalt vonWarum wird bei der Verwendung von SQLite3 in Python die „Falsche Anzahl der bereitgestellten Bindungen' bei Verwendung der „?'-Parametersubstitution angezeigt?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!