Heim  >  Artikel  >  Datenbank  >  Wie führe ich eine SELECT-Abfrage mit einer IN-Klausel mit MySQLdb aus?

Wie führe ich eine SELECT-Abfrage mit einer IN-Klausel mit MySQLdb aus?

Barbara Streisand
Barbara StreisandOriginal
2024-10-31 00:53:03119Durchsuche

How to Execute a SELECT Query with an IN Clause Using MySQLdb?

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!

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