no use formato de cadena para interpolar valores SQL. Usar parámetros SQL:
SQL = 'INSERT INTO test_table (col1, col2, col3, col4) VALUES (%s, %s, %s, %s)'
cursor.execute(SQL, (var1, var2, var3, var4))
Aquí el %s
son parámetros SQL; la base de datos luego se encarga de escapar los valores (pasados como segundo argumento a `cursor.execute) por usted.
La sintaxis exacta que necesita usar depende de su adaptador de base de datos; algunos usan %s
, otros usan ?
para los marcadores de posición.
De lo contrario, no puede usar contenedores de Python, como una lista, para estos parámetros. Primero tendría que serializar eso en un formato de cadena; podría usar JSON para eso, pero también tendría que recordar decodificar el JSON en una cadena de Python nuevamente cuando consulte la base de datos. Eso es lo que intentaron transmitir las respuestas a la otra pregunta.
Por ejemplo, si var4
es la lista, podrías usar:
cursor.execute(SQL, (var1, var2, var3, json.dumps(var4)))