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)))