Đ ừng sử dụng định dạng chuỗi để nội suy các giá trị SQL. Sử dụng các tham số SQL:
SQL = 'INSERT INTO test_table (col1, col2, col3, col4) VALUES (%s, %s, %s, %s)'
cursor.execute(SQL, (var1, var2, var3, var4))
Đây là %s
là các tham số SQL; cơ sở dữ liệu sau đó sẽ xử lý việc thoát các giá trị (được chuyển vào làm đối số thứ 2 cho `cursor.execute) cho bạn.
Chính xác cú pháp bạn cần sử dụng phụ thuộc vào bộ điều hợp cơ sở dữ liệu của bạn; một số sử dụng %s
, những người khác sử dụng ?
cho các trình giữ chỗ.
Nếu không, bạn không thể sử dụng các vùng chứa Python, như một danh sách, cho các tham số này. Trước tiên, bạn phải tuần tự hóa nó thành một định dạng chuỗi; bạn có thể sử dụng JSON cho việc đó, nhưng sau đó bạn cũng phải nhớ giải mã lại JSON thành một chuỗi Python khi bạn truy vấn cơ sở dữ liệu. Đó là những gì mà câu trả lời cho câu hỏi kia đã cố gắng truyền đạt.
Ví dụ:if var4
là danh sách, bạn có thể sử dụng:
cursor.execute(SQL, (var1, var2, var3, json.dumps(var4)))