Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Escape-Anführungszeichen für MySQL in Python

nicht Verwenden Sie die Zeichenfolgenformatierung, um SQL-Werte zu interpolieren. Verwenden Sie SQL-Parameter:

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

Hier der %s sind SQL-Parameter; die Datenbank kümmert sich dann für Sie darum, die Werte zu maskieren (die als 2. Argument an `cursor.execute übergeben werden).

Welche Syntax Sie genau verwenden müssen, hängt von Ihrem Datenbankadapter ab; einige verwenden %s , andere verwenden ? für die Platzhalter.

Sie können für diese Parameter ansonsten keine Python-Container wie eine Liste verwenden. Sie müssten das zuerst in ein Zeichenfolgenformat serialisieren; Sie könnten dafür JSON verwenden, aber dann müssten Sie auch daran denken, den JSON wieder in einen Python-String zu decodieren, wenn Sie die Datenbank abfragen. Das versuchten die Antworten auf die andere Frage zu vermitteln.

Wenn beispielsweise var4 ist die Liste, könnten Sie verwenden:

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