sql >> Databasteknik >  >> RDS >> Mysql

Infoga lista i min databas med Python

Svaret på din ursprungliga fråga är:Nej, du kan inte infoga en sådan lista.

Men med lite justeringar kan du få den koden att fungera genom att använda %r och passerar i en tuppel:

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

Tyvärr gör den typen av variabel infogning din kod sårbar för SQL-injektionsattacker .

Istället rekommenderar vi att du använder Pythons DB API och bygga en anpassad frågesträng med flera frågetecken för data som ska infogas:

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)

Exemplet i början av SQLite3-dokumenten visar hur man skickar argument med hjälp av frågetecknen och den förklarar varför de är nödvändiga (i huvudsak säkerställer det korrekt citering av dina variabler).



  1. Doctrine2 ORM välj för uppdatering

  2. SQL Server 2008 Spatial:hitta en punkt i polygon

  3. Hur pg_typeof() fungerar i PostgreSQL

  4. Datumtid lika med eller högre än idag i MySQL