sql >> Databasteknik >  >> RDS >> Mysql

Undvikande citat för MySQL i python

Gör inte använd strängformatering för att interpolera SQL-värden. Använd SQL-parametrar:

SQL = 'INSERT INTO test_table (col1, col2, col3, col4) VALUES (%s, %s, %s, %s)'
cursor.execute(SQL, (var1, var2, var3, var4))

Här är %s är SQL-parametrar; databasen tar sedan hand om värdena (som skickas in som det andra argumentet till `cursor.execute) åt dig.

Exakt vilken syntax du behöver använda beror på din databasadapter; vissa använder %s , andra använder ? för platshållarna.

Du kan annars inte använda Python-behållare, som en lista, för dessa parametrar. Du måste först serialisera det till ett strängformat; du kan använda JSON för det, men då måste du också komma ihåg att avkoda JSON till en Python-sträng igen när du frågar databasen. Det var vad svaren på den andra frågan försökte förmedla.

Till exempel, om var4 är listan kan du använda:

cursor.execute(SQL, (var1, var2, var3, json.dumps(var4)))


  1. MySql räkna dubbletter i kolumn i en tabell

  2. Extrahera primärnyckeln från MySQL i PHP

  3. SQL en numreringskolumn - MySQL

  4. Välj kolumner över olika databaser