Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Thoát dấu ngoặc kép cho MySQL trong python

Đ ừ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)))


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nhận tổng của cột MySQL trong PHP

  2. MySQL InnoDB Cluster 8.0 - Quá trình triển khai hoàn chỉnh:Phần thứ nhất

  3. Hạn chế về hiệu suất của Khóa chính tổng hợp trong MySQL

  4. Dữ liệu MySQL INSERT không được lưu trữ trong db thích hợp, chỉ tạm thời?

  5. Mã hóa kép Django có phải là một chuỗi Unicode (utf-8?) Không?