Fügen Sie SQL -Variablen über MySQLDB hinzu
-
27-10-2019 - |
Frage
Ich habe Schwierigkeiten, die Dokumentation zu finden, um nicht-SQL-Variablen zu einer SQL-Erklärung hinzuzufügen, in die die offiziellen Dokumente nicht darauf eingehen http://dev.mysql.com/doc/refman/5.0/en/user-variables.html.
Wie würde ich Folgendes in Python und gültigem SQL machen?
id, provider_id, title = row[0], row[2], row[4]
cursor.execute("INSERT INTO vendor_id VALUES (%s,%s,%s);"%(id, provider_id, title))
Lösung
Du bist auf dem richtigen Weg, aber es sollte so aussehen.
id, provider_id, title = row[0], row[2], row[4]
cursor.execute("INSERT INTO vendor_id VALUES (%s, %s, %s)", id, provider_id, title)
Die Python SQL -Datenbank -API deaktiviert automatisch eine Reformation der Flucht und Zitat von Variablen. Die String -Formatierungsbetreiber sind unnötig und in diesem Fall keine Formatierung von variablen Zitaten. Sie können das endgültige Array von Variablen formatieren, wie Sie möchten, verwenden Sie den % -Operator einfach nicht wie Sie es verwenden. Wenn ich Recht habe, ist der Grund dafür, dass die Variablen gebunden und nicht in den Text formatiert sind, damit eine Injektion nicht auftreten kann
cursor.execute("INSERT INTO vendor_id VALUES (%s, %s, %s)", (id, provider_id, title))
cursor.execute("INSERT INTO vendor_id VALUES (?, ?, ?)", (id, provider_id, title))
sollte auch funktionieren.