La réponse à votre question initiale est :Non, vous ne pouvez pas insérer une liste comme celle-là.
Cependant, avec quelques ajustements, vous pouvez faire fonctionner ce code en utilisant %r
et en passant dans un tuple :
variable_1 = "HELLO"
variable_2 = "ADIOS"
varlist = [variable_1, variable_2]
print "INSERT INTO table VALUES %r;" % (tuple(varlist),)
Malheureusement, ce style d'insertion de variables laisse votre code vulnérable aux attaques par injection SQL .
À la place, nous vous recommandons d'utiliser API DB de Python et construire une chaîne de requête personnalisée avec plusieurs points d'interrogation pour les données à insérer :
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)
L'exemple au début de la docs SQLite3 montre comment passer des arguments en utilisant les points d'interrogation et explique pourquoi ils sont nécessaires (essentiellement, cela assure la citation correcte de vos variables).