Ich verwende Python2.7 auf Windows 7 und einen MySQL-Server, Verbindung von Pymssql.Geben Sie eine Liste von Zeichenfolgen zu einer SQL-Abfrage [Python]
Mein Problem: Ich habe eine sehr große Datenbank und ich möchte die IDs von Objekten auswählen, die einem von mehreren Wörtern (String) aus einer Liste entsprechen, die ich meinem Programm gebe. In dieser Abfrage muss auch ein LIKE% ...% Ausdruck für diese Wörter aus meiner Liste sein.
Bisher habe ich mein Python-Script mit meiner Datenbank verbunden und einen Cursor definiert. Dann machte ich eine kleine Liste mit den Worten, ich suche und ich geschaffen für meine Abfrage einige Platzhalter später:
wortliste = ['Bruch', 'Verwerfung']
placeholders = ','.join(['%s'] * len(wortliste))
Hier meine Frage ist:
query = """ SELECT BO_INDEX FROM GeoTest.dbo.Tabelle_Bohrung
WHERE BO_BEMERKUNG IN ({})""".format(placeholders)
Wenn ich für eine bin auf der Suche Wort, hier zum Beispiel für das Wort ‚Bruch‘, meine Abfrage würde wie folgt aussehen:
query = """ SELECT BO_INDEX FROM GeoTest.dbo.Tabelle_Bohrung
WHERE BO_BEMERKUNG LIKE '%Bruch%'"""
diese Abfrage für ein einzelnes Wort entspricht den rechte IDs (= BO_INDEX). Die Abfrage mit den Platzhaltern stürzt nicht ab, aber es hat nichts gefunden :(
Aber ich mag meine Datenbank für ein paar Wörter Schleife und fügen Sie die passenden IDs für jedes Wort (string) in meiner Liste (= wortliste) und in eine neue Liste anhängen.
ich wirklich dont't wissen, wie dieses Problem zu lösen!
ich bin dankbar für jeden neuen Weg, um diese Herausforderung zu lösen! Dank!
Ja, das stimmt! – Hardinger
Aber meine Abfrage stimmt immer noch nicht überein, ich muss den LIKE '% ...%' - Ausdruck einfügen, aber ich weiß nicht, wie für dieses Beispiel. – Hardinger
Wissen Sie, welche Abfrage Sie erstellen möchten, können Sie das zur Frage hinzufügen? Vielleicht möchten Sie dies verwenden: http://stackoverflow.com/questions/12957993/how-to-use-sql-like-condition-with-multiple-values-in-postgresql – Bahrom