Odpowiedź na Twoje pierwotne pytanie brzmi:Nie, nie możesz wstawić takiej listy.
Jednak po pewnych poprawkach możesz sprawić, by ten kod działał, używając %r
i przekazując krotkę:
variable_1 = "HELLO"
variable_2 = "ADIOS"
varlist = [variable_1, variable_2]
print "INSERT INTO table VALUES %r;" % (tuple(varlist),)
Niestety, ten styl wstawiania zmiennych naraża Twój kod na ataki wstrzykujące SQL .
Zamiast tego zalecamy użycie Python DB API i budowanie dostosowanego ciągu zapytania z wieloma znakami zapytania do wstawiania danych:
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)
Przykład na początku dokumentacja SQLite3 pokazuje, jak przekazywać argumenty za pomocą znaków zapytania i wyjaśnia, dlaczego są one konieczne (zasadniczo zapewnia poprawne cytowanie zmiennych).