2017-02-16 2 views
2

Ich benutze Pymssql, um eine Verbindung zu einer Datenbank herzustellen. Diese Datenbank hat eine Tabelle, die eine Spalte hat (nennen wir es Col), auf der alle Strings 64 Zeichen lang sind. (Beispiel: "John "). Nun möchte ich John in der Datenbank finden. Ich versuchte mit LIKE. Wenn ich den Namen hard funktioniert es perfekt:Wie verwendet man LIKE und% mit Pymssql auf einer unbestimmten Anzahl von Parametern?

cursor.execute("SELECT * FROM table WHERE col LIKE 'John%' ") // gives perfect results 

Aber wenn ich es versuchen, mit %s dies scheint nichts zu passen.

cursor.execute("SELECT * FROM table WHERE col LIKE '%s%' ",(0,"John")) // gives Nothing 
cursor.execute("SELECT * FROM table WHERE col LIKE '%s%' ",{0:"John"}) // gives SQL "Incorrect syntax" error 
cursor.execute("SELECT * FROM table WHERE col LIKE '%s%' " % {0:"John"}) // gives unsupported format error 

Wenn ich wollte dies gearbeitet hätte nur eine Spalte zum Spiel:

cursor.execute("SELECT * FROM table WHERE col LIKE '%s%' ", "John") // gives all Johns 

Aber ich möchte auf eine unbestimmte Anzahl von Spalten übereinstimmen. Gibt es eine Möglichkeit, einen Blick darauf zu werfen, wie die letzte Abfrage aussehen würde, damit ich versuchen kann, sie selbst zu debuggen. Oder sonst weißt du, wie man viele Parameter benutzt. nach dem suchen here scheint es, ich sollte eine Reihe von Tupeln verwenden, aber ich kann keinen Weg finden, es zu arbeiten.

Vielen Dank im Voraus

Antwort

2

Versuchen Sie Folgendes:

cursor.execute("SELECT * FROM table WHERE col LIKE %s ", "John%") 
0

ich diese format() mit schreiben würde, wenn ich faul“wurde

cursor.execute("SELECT * FROM table WHERE col LIKE '{0}%' ".format("John")) 

oder richtige Verwendung von Parametern sein:

cursor.execute("SELECT * FROM table WHERE col LIKE '%s%' ", ("John")) 

Ich denke, das Problem ist, dass (0, "John") als zwei Parameter interpretiert wird, nicht als einer.

Verwandte Themen