của Python Tôi đang sử dụng để (hư hỏng bởi?) Giao diện SQLite của python để xử lý cơ sở dữ liệu SQL. Một tính năng thú vị trong API SQLite của python là "trình quản lý ngữ cảnh", tức là, câu lệnh with
của python. Tôi thường thực hiện các truy vấn theo cách sau:Trình quản lý ngữ cảnh cho MySQLdb
import as sqlite
with sqlite.connect(db_filename) as conn:
query = "INSERT OR IGNORE INTO shapes VALUES (?,?);"
results = conn.execute(query, ("ID1","triangle"))
Với đoạn mã trên, nếu truy vấn của tôi sẽ thay đổi cơ sở dữ liệu và tôi quên để chạy conn.commit()
, người quản lý bối cảnh chạy nó cho tôi tự động khi thoát khỏi tuyên bố with
. Nó cũng xử lý ngoại lệ độc đáo: nếu một ngoại lệ xảy ra trước khi tôi cam kết bất cứ điều gì, sau đó cơ sở dữ liệu được cuộn lại.
Tôi hiện đang sử dụng giao diện MySQLdb
, có vẻ như không hỗ trợ trình quản lý ngữ cảnh tương tự ra khỏi hộp. Làm thế nào để tạo của riêng tôi? Có một câu hỏi liên quan here, nhưng nó không cung cấp một giải pháp hoàn chỉnh.
Giải pháp tuyệt vời! Bạn không chỉ đưa ra câu trả lời cho MySQLdb, nó cũng có thể được sử dụng với các trình điều khiển khác. Ngoài ra, oursql trông đầy hứa hẹn. Cảm ơn. – conradlee
@MMartins: Cảm ơn rất nhiều vì đã sửa. – unutbu