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

Liste mit Python in meine Datenbank einfügen

Die Antwort auf Ihre ursprüngliche Frage lautet:Nein, so eine Liste können Sie nicht einfügen.

Mit einigen Optimierungen könnten Sie diesen Code jedoch zum Laufen bringen, indem Sie %r verwenden und Übergabe eines Tupels:

variable_1 = "HELLO"
variable_2 = "ADIOS"
varlist = [variable_1, variable_2]
print "INSERT INTO table VALUES %r;" % (tuple(varlist),)

Leider macht diese Art der Variableneinfügung Ihren Code anfällig für SQL-Injection-Angriffe .

Stattdessen empfehlen wir die Verwendung von Pythons DB-API und Erstellen einer benutzerdefinierten Abfragezeichenfolge mit mehreren Fragezeichen für die einzufügenden Daten:

variable_1 = "HELLO"
variable_2 = "ADIOS"
varlist = [variable_1,variable_2]
var_string = ', '.join('?' * len(varlist))
query_string = 'INSERT INTO table VALUES (%s);' % var_string
cursor.execute(query_string, varlist)

Das Beispiel am Anfang der SQLite3-Dokumentation zeigt, wie Argumente mit den Fragezeichen übergeben werden und erklärt, warum sie notwendig sind (im Wesentlichen stellt es sicher, dass Ihre Variablen korrekt zitiert werden).