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

Làm thế nào để cập nhật mysql với python trong đó các trường và mục nhập từ từ điển?

Bạn không muốn đặt các giá trị theo nghĩa đen bằng cách sử dụng nội suy chuỗi - Các cuộc tấn công chèn vào SQL không phải là Điều tốt (tm) . Thay vào đó, bạn sử dụng cú pháp trình giữ chỗ có liên quan cho cơ sở dữ liệu của mình (tôi nghĩ MySQL's là '% s').

Lưu ý:Tôi đang sử dụng .format ở đây, thay đổi để sử dụng% nếu bạn muốn, nhưng thoát khỏi bất kỳ% 's

d = {'col1': 'val1', 'col2': 'val2'}
sql = 'UPDATE table SET {}'.format(', '.join('{}=%s'.format(k) for k in d))
print sql
# 'UPDATE table SET col2=%s, col1=%s'

Giả sử cur là con trỏ DB, cách chính xác để thực hiện truy vấn là:

cur.execute(sql, d.values())

Điều này hoạt động vì mặc dù thứ tự của từ điển là thứ tự tùy ý thực sự, thứ tự của các khóa / giá trị của một dict sẽ nhất quán sao cho dict(zip(d.keys(), d.values())) == d .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách tốt nhất để có được 'thứ hạng' của ai đó từ bảng điểm với php và mysql mà không lặp lại

  2. Khóa ngoại nhiều cột trong MySQL?

  3. mysql:tham chiếu đến các cột bằng số

  4. Làm cách nào để chuyển đổi MySQL DB sang XML?

  5. Làm cách nào để điền cơ sở dữ liệu chỉ một lần trước các phương thức @Test trong thử nghiệm mùa xuân?