Python-Zeichenfolgenformate mit SQL-Platzhaltern und LIKE

Es fällt mir schwer, SQL in Python dazu zu bringen, MySQLdb richtig zu durchlaufen. Die Formatierung von Pythons-Strings bringt mich um.

ie SQL-Anweisung @My verwendet das Schlüsselwort LIKE mit Platzhaltern. Ich habe verschiedene Dinge in Python ausprobiert. Das Problem ist, wenn ich einen davon zum Laufen bringe, gibt es eine Codezeile in MySQLdb, die das String-Format sprengt.

Versuch 1:

"SELECT tag.userId, count (user.id) as totalRows FROM user INNER JOIN-Tag ON user.id = tag.userId WHERE user.username LIKE '%% s%'"% (query)

Dies ist ein no go. Ich erhalte den Wert error:

ValueError: Nicht unterstütztes Formatierungszeichen '' '(0x27) bei Index 128

Versuch 2:

"SELECT tag.userId, count (user.id) as totalRows FROM user INNER JOIN-Tag ON user.id = tag.userId WHERE user.username LIKE '\ %% s \%'"% (query)

Ich erhalte das gleiche Ergebnis aus Versuch 1.

Versuch 3:

like = "LIKE '%" + str (Abfrage) + "%'" totalq = "SELECT tag.userId, zählen (user.id) als totalRows FROM user INNER JOIN-Tag ON user.id = tag.userId WHERE user. Benutzername "+ like

Dies erstellt die totalq-Variable korrekt, aber wenn ich jetzt zur Ausführung der Abfrage gehe, erhalte ich Fehler von MySQLdb:

Datei "build / bdist.macosx-10.6-universal / egg / MySQLdb / cursors.py", Zeile 158, in execute query = query% db.literal (args) TypeError: Nicht genügend Argumente für das Format string

Versuch 4:

like = "LIKE '\%" + str (Abfrage) + "\%'" totalq = "SELECT tag.userId, zählen (user.id) als totalRows FROM user INNER JOIN-Tag ON user.id = tag.userId WHERE user.username "+ like

Dies ist die gleiche Ausgabe wie bei Versuch 3.

Das alles scheint wirklich seltsam. Wie kann ich Platzhalter in SQL-Anweisungen mit Python verwenden?

Antworten auf die Frage(8)

Ihre Antwort auf die Frage