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

Sử dụng các câu lệnh đã chuẩn bị với mysql trong python

Việc sử dụng các câu lệnh đã chuẩn bị sẵn với MySQL bằng Python được giải thích, ví dụ:tại http://zetcode.com/db/mysqlpython/ - tìm trong trang đó để biết Prepared statements .

Trong trường hợp của bạn, đó sẽ là, ví dụ:

sql = ('INSERT INTO {} (date, time, tag, power) VALUES '
       '(%s, %s, %s, %s)'.format(self.db_scan_table))

và sau đó, "trong vòng lặp" như bạn đặt:

self.cursor.execute(sql, (d, t, tag, power))

mà không cần định dạng chuỗi nào nữa - MySQLdb mô-đun thay mặt bạn chuẩn bị và thực thi các phần (và có thể lưu vào bộ nhớ cache mọi thứ để tránh lặp lại công việc một cách không cần thiết, v.v., v.v.).

Hãy xem xét, tùy thuộc vào bản chất của "vòng lặp" mà bạn đề cập, rằng có thể một lệnh gọi đến .execute_many (với một chuỗi các bộ giá trị làm đối số thứ hai) có thể thay thế toàn bộ vòng lặp (trừ khi bạn cần xử lý nhiều hơn trong vòng lặp đó ngoài việc chỉ chèn dữ liệu vào DB).

Đã thêm:một giải pháp thay thế tốt hơn hiện nay có thể là sử dụng Connector/Python của riêng mysql và prepare=True rõ ràng trong .cursor() factory - xem http:// dev .mysql.com / doc / connector-python / en / connector-python-api-mysqlcursorprepared.html . Điều này cho phép bạn có một con trỏ cụ thể về các câu lệnh được chuẩn bị (với giao thức nhị phân "hiệu quả hơn sử dụng PREPARE và EXECUTE", theo trang mysql.com đó) và một con trỏ khác cho các câu lệnh không được chuẩn bị tốt hơn; "rõ ràng tốt hơn là ngầm hiểu" sau tất cả một trong những nguyên tắc trong "The Zen of Python" (import this từ một lời nhắc tương tác để đọc tất cả các nguyên tắc đó). mysqldb thực hiện mọi việc một cách ẩn ý (và có vẻ như phiên bản nguồn mở hiện tại không sử dụng các câu lệnh đã chuẩn bị) không thể là một kiến ​​trúc tốt như Connector/Python rõ ràng hơn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chèn và truy xuất hình ảnh vào mysql thông qua python

  2. Làm thế nào để gỡ lỗi các truy vấn MySQL / Doctrine2?

  3. CHÈN nhiều bản ghi bằng bản ghi hoạt động ruby ​​on rails

  4. Quay lại những ngày không có cuối tuần

  5. Ví dụ về LOCALTIME - MySQL