Câu trả lời cho câu hỏi ban đầu của bạn là:Không, bạn không thể chèn một danh sách như vậy.
Tuy nhiên, với một số điều chỉnh, bạn có thể làm cho mã đó hoạt động bằng cách sử dụng %r
và chuyển qua một tuple:
variable_1 = "HELLO"
variable_2 = "ADIOS"
varlist = [variable_1, variable_2]
print "INSERT INTO table VALUES %r;" % (tuple(varlist),)
Thật không may, kiểu chèn biến đó khiến mã của bạn dễ bị tấn công chèn SQL .
Thay vào đó, chúng tôi khuyên bạn nên sử dụng API DB của Python và xây dựng một chuỗi truy vấn tùy chỉnh với nhiều dấu chấm hỏi để chèn dữ liệu vào:
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)
Ví dụ ở đầu tài liệu SQLite3 hiển thị cách chuyển các đối số bằng cách sử dụng dấu chấm hỏi và nó giải thích tại sao chúng lại cần thiết (về cơ bản, nó đảm bảo trích dẫn chính xác các biến của bạn).