Heim >Backend-Entwicklung >Python-Tutorial >Wie behebt man einen SQLite-Parameterersetzungsfehler in Python beim Abfragen einer Datenbank?

Wie behebt man einen SQLite-Parameterersetzungsfehler in Python beim Abfragen einer Datenbank?

Barbara Streisand
Barbara StreisandOriginal
2024-10-19 15:25:02488Durchsuche

How to Fix SQLite Parameter Substitution Error in Python When Querying a Database?

Behebung eines SQLite-Parameterersetzungsfehlers in Python

Beim iterativen Abfragen einer Datenbank nach bestimmten Werten basierend auf einer Liste tritt eine häufige Gefahr auf die Verwendung des „?“ Methode zur Parameterersetzung. Obwohl diese Methode dazu gedacht ist, SQL-Injections zu verhindern, kann sie bei unsachgemäßer Verwendung zu Fehlern führen.

Im beschriebenen Szenario tritt der folgende Fehler auf: „sqlite3.ProgrammingError: Falsche Anzahl der bereitgestellten Bindungen.“ Dies weist darauf hin, dass die Anzahl der an die Methode „execute()“ übergebenen Parameter nicht mit der erwarteten Anzahl übereinstimmt.

Der Fehler rührt von der anfänglichen Erstellung der Datenbanktabelle her, die 8 Spalten hat und daher 8 Parameter in der benötigt entsprechende Einfügungs- oder Aktualisierungsabfragen. Bei Verwendung des „?“ Bei der Substitutionsmethode sollte der zweite Parameter eine Sequenz sein, die nur die zu bindenden Werte und keine einzelne Zeichenfolge enthält.

Um dieses Problem zu beheben, sollte die Methodeexecute() wie folgt aufgerufen werden:

<code class="python">self.cursor.execute("SELECT weight FROM Equipment WHERE name = ?", [item])</code>

Durch die Übergabe einer Liste mit einem einzelnen Element ([item]) als zweiten Parameter wird die richtige Anzahl von Bindungen bereitgestellt und der Fehler vermieden. Darüber hinaus entspricht die Verwendung des vorgeschlagenen Formulars den Empfehlungen in der Python-Bibliotheksreferenz für SQLite3-Cursorobjekte.

Das obige ist der detaillierte Inhalt vonWie behebt man einen SQLite-Parameterersetzungsfehler in Python beim Abfragen einer Datenbank?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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