Heim >Datenbank >MySQL-Tutorial >Wie führe ich eine SELECT-Abfrage mit einer IN-Klausel mit MySQLdb aus?
Ausführen von „SELECT ... WHERE ... IN ...“ mit MySQLdb
Beim Versuch, eine SELECT-Abfrage mit einem auszuführen IN-Klausel mit MySQLdb können Benutzer auf Probleme stoßen, bei denen keine Zeilen zurückgegeben werden, obwohl die Abfrage über die MySQL-Befehlszeile wie erwartet funktioniert. Dies kann auftreten, wenn unnötige Anführungszeichen um die IN-Werte gesetzt werden.
Um dieses Problem zu beheben, ist eine manuelle Erstellung der Abfrageparameter erforderlich. Sowohl in Python 2 als auch in Python 3 kann aus der Liste der IN-Werte eine durch Kommas getrennte Zeichenfolge von Platzhaltern (%s) generiert werden. Die Abfrage kann dann mit dieser Zeichenfolge formatiert und mit der ursprünglichen Werteliste ausgeführt werden.
Für Python 3:
<code class="python">args=['A', 'C'] sql='SELECT fooid FROM foo WHERE bar IN (%s)' in_p=', '.join(list(map(lambda x: '%s', args))) sql = sql % in_p cursor.execute(sql, args)</code>
Für Python 2:
<code class="python">args=['A', 'C'] sql='SELECT fooid FROM foo WHERE bar IN (%s)' in_p=', '.join(map(lambda x: '%s', args)) sql = sql % in_p cursor.execute(sql, args)</code>
Wenn Sie diesem Ansatz folgen, wird die SQL-Abfrage korrekt mit den gewünschten IN-Werten formatiert, wodurch das Problem behoben wird, bei dem zuvor keine Zeilen zurückgegeben wurden.
Das obige ist der detaillierte Inhalt vonWie führe ich eine SELECT-Abfrage mit einer IN-Klausel mit MySQLdb aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!