Problem bei der Ersetzung von SQLite-Parametern
Bei der Verwendung von SQLite3 mit Python 2.5 tritt ein häufiges Problem auf, wenn versucht wird, eine Liste zu durchlaufen und Daten daraus abzurufen eine Datenbank. Mit dem vorgeschlagenen „?“ Parameter als Vorsichtsmaßnahme für SQL-Injektionen führt häufig zu einem Fehler bezüglich der Anzahl der Bindungen.
Bei der Untersuchung stellt sich heraus, dass der Fehler auf die anfängliche Erstellung der Datenbanktabelle zurückzuführen ist. Die Erstellungsanweisung, wie zum Beispiel:
CREATE TABLE Equipment (id INTEGER PRIMARY KEY, name TEXT, price INTEGER, weight REAL, info TEXT, ammo_cap INTEGER, availability_west TEXT, availability_east TEXT);
registriert acht Bindungen, obwohl während der Abfrage nur ein Parameter verwendet wird.
Um dieses Problem zu beheben Problem, ändern Sie den Code, um eine Sequenz als zweiten Parameter für die Cursor.execute()-Methode zu verwenden:
self.cursor.execute("SELECT weight FROM Equipment WHERE name = ?", [item])
Diese Änderung stellt sicher, dass der Methode eine Sequenz bereitgestellt wird, wodurch die Verwirrung über die Anzahl der Bindungen behoben wird.
Referenzieren auf Die Dokumentation zu SQLite3-Cursorobjekten kann weitere Hinweise zu diesem Thema bieten.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3