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).