Heim >Backend-Entwicklung >Python-Tutorial >Verursacht die SQLite-Parameterersetzung Bindungsfehler in Python?
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-Injections 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:
<code class="sql">CREATE TABLE Equipment (id INTEGER PRIMARY KEY, name TEXT, price INTEGER, weight REAL, info TEXT, ammo_cap INTEGER, availability_west TEXT, availability_east TEXT);</code>
registriert acht Bindungen, obwohl nur ein Parameter während der Abfrage verwendet wird.
Um dieses Problem zu beheben, ändern Sie den Code, um eine Sequenz zu verwenden als zweiter Parameter der Cursor.execute()-Methode:
<code class="python">self.cursor.execute("SELECT weight FROM Equipment WHERE name = ?", [item])</code>
Diese Änderung stellt sicher, dass der Methode eine Sequenz bereitgestellt wird, wodurch die Verwirrung über die Anzahl der Bindungen beseitigt wird.
Referenzierung Die Dokumentation zu SQLite3-Cursorobjekten kann weitere Hinweise zu diesem Thema bieten.
Das obige ist der detaillierte Inhalt vonVerursacht die SQLite-Parameterersetzung Bindungsfehler in Python?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!