sql >> Database teknologi >  >> RDS >> Mysql

Undslippende citater til MySQL i python

Gør ikke brug strengformatering til at interpolere SQL-værdier. Brug SQL-parametre:

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

Her er %s er SQL-parametre; databasen sørger derefter for at undslippe værdierne (indgivet som det 2. argument til `cursor.execute) for dig.

Præcis hvilken syntaks du skal bruge afhænger af din databaseadapter; nogle bruger %s , andre bruger ? for pladsholderne.

Du kan ellers ikke bruge Python-beholdere, som en liste, til disse parametre. Du skal først serialisere det til et strengformat; du kunne bruge JSON til det, men så skulle du også huske at afkode JSON'en til en Python-streng igen, når du forespørger i databasen. Det er, hvad svarene på det andet spørgsmål forsøgte at formidle.

For eksempel, hvis var4 er listen, kan du bruge:

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


  1. Stop forespørgsel via pdo

  2. SQL returnerer 100 tilfældige rækker for hver alder

  3. MemSQL - Surrogatnøgle som Primær og forskellige unikke nøgler på samme tid i tabeloprettelse

  4. mysqldump:Fejl 2020:Fik pakke større end 'max_allowed_packet' bytes ved dumping af tabel