sql >> Databáze >  >> RDS >> Mysql

implodování seznamu pro použití v klauzuli python MySQLDB IN

Použijte list_of_ids přímo:

format_strings = ','.join(['%s'] * len(list_of_ids))
cursor.execute("DELETE FROM foo.bar WHERE baz IN (%s)" % format_strings,
                tuple(list_of_ids))

Tímto způsobem se vyhnete nutnosti citovat sami sebe a vyhnete se všem druhům vkládání SQL.

Všimněte si, že data (list_of_ids ) jde přímo do ovladače mysql jako parametr (ne v textu dotazu), takže nedochází k žádné injekci. V řetězci můžete ponechat libovolné znaky, není třeba znaky odstraňovat nebo uvozovat.



  1. Spustit spouštěč pouze při aktualizaci určitých sloupců (SQL Server)

  2. SQLite Limit

  3. Dotazování na názory:Jedna sekvence pro všechny tabulky

  4. PostgreSQL:paralelní dotazování v akci