Ответ на ваш исходный вопрос таков: нет, вы не можете вставить такой список.
Однако, с некоторыми изменениями, вы можете заставить этот код работать, используя %r
и передаваякортеж:
variable_1 = "HELLO"
variable_2 = "ADIOS"
varlist = [variable_1, variable_2]
print "INSERT INTO table VALUES %r;" % (tuple(varlist),)
К сожалению, этот стиль вставки переменных делает ваш код уязвимым для атак SQL-инъекций .
Вместо этого мы рекомендуем использовать API-интерфейс DB Python и создание настраиваемой строки запроса с несколькими вопросительными знаками для вставляемых данных:
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)
Пример в начале Документы SQLite3 показывает, как передавать аргументы с помощьювопросительные знаки, и это объясняет, почему они необходимы (по сути, это обеспечивает правильное цитирование ваших переменных).