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

Indsæt liste i min database ved hjælp af Python

Svaret på dit oprindelige spørgsmål er:Nej, sådan en liste kan du ikke indsætte.

Men med nogle justeringer kan du få koden til at virke ved at bruge %r og passerer i en tupel:

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

Desværre efterlader denne stil med variabel indsættelse din kode sårbar over for SQL-injektionsangreb .

I stedet anbefaler vi at bruge Pythons DB API og opbygning af en tilpasset forespørgselsstreng med flere spørgsmålstegn for de data, der skal indsættes:

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)

Eksemplet i begyndelsen af ​​SQLite3-dokumenterne viser, hvordan man sender argumenter ved hjælp af spørgsmålstegnene, og det forklarer, hvorfor de er nødvendige (i det væsentlige sikrer det korrekt citering af dine variabler).



  1. Sådan angiver du rækker for en forespørgsel eller viser 'ingen registreringer' ved hjælp af en enkelt forespørgsel

  2. Er der en måde at se en forberedt forespørgsel, da den vil blive udført på databasen?

  3. Sådan implementeres lokal MySQL-database til Heroku

  4. Kryptering af adgangskode i Java eller MySQL?