Не използвайте форматиране на низове за интерполиране на SQL стойности. Използвайте SQL параметри:
SQL = 'INSERT INTO test_table (col1, col2, col3, col4) VALUES (%s, %s, %s, %s)'
cursor.execute(SQL, (var1, var2, var3, var4))
Тук %s
са SQL параметри; след това базата данни се грижи за избягването на стойностите (предадени като 2-ри аргумент на `cursor.execute) вместо вас.
Какъв точно синтаксис трябва да използвате зависи от вашия адаптер за база данни; някои използват %s
, други използват ?
за заместителите.
По друг начин не можете да използвате Python контейнери, като списък, за тези параметри. Първо ще трябва да сериализирате това в низов формат; бихте могли да използвате JSON за това, но след това също трябва да запомните да декодирате JSON в низ на Python отново, когато правите заявка към базата данни. Това се опитаха да предадат отговорите на другия въпрос.
Например, ако var4
е списъкът, можете да използвате:
cursor.execute(SQL, (var1, var2, var3, json.dumps(var4)))