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))
War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top