Löschen Sie mehrere Zeilen in MYSQL mit Info aus der Python-Liste

Wenn die Liste LL:

LL = ['foo', bar', 'noo', 'boo',]

In einem mysql table test in Spalte ID mit anderen Id's.

Ich könnte unten verwenden, um alle Zeilen mit id's in LL zu löschen:

  csr.execute("""DELETE FROM test.test WHERE ID = "Foo"; """) csr.execute("""DELETE FROM test.test WHERE ID = "bar"; """) csr.execute("""DELETE FROM test.test WHERE ID = "noo"; """) csr.execute("""DELETE FROM test.test WHERE ID = "boo"; """) 

Wie könnte ich es programmatisch machen?

  • Kann nicht importieren MySQLdb - python - Windows 8.1
  • Klasse hat keine Tabelle oder tablename angegeben und erbt nicht von einer vorhandenen Tabelle-abgebildeten Klasse
  • Sqlalchemy Verbindung zur VPS Datenbank
  • Django MySQL Gruppe bei Tag mit Zeitzone
  • Pyodbc und mySQL
  • Ergebnisse mit MySQL-Format mit Python drucken
  • 3 Solutions collect form web for “Löschen Sie mehrere Zeilen in MYSQL mit Info aus der Python-Liste”

    Sie können es mit einer einzigen Abfrage machen:

     id_list = ['abc', 'def', 'ghi'] query_string = "delete from test where id in (%s)" % ','.join(['?'] * len(id_list)) cursor.execute(query_string, id_list) 

    Da cursor.execute Esel-Strings bei der Substitution ausläuft, ist dieses Beispiel sicher gegen SQL-Injektionen.

     for item in LL: csr.execute("DELETE FROM test.test WHERE ID = '%s'", item) 

    so wie das?

    String formatters – http://docs.python.org/library/string.html#format-string-syntax

     ["""DELETE FROM test.test WHERE ID = "%s"; """ % x for x in LL] 

    Und führen Sie dann jede der SQL-Anweisungen in der Liste aus.

    Python ist die beste Programmiersprache der Welt.