Tôi đọc trong docs:Giao dịch có bắt đầu ngay cả khi CHỌN không?
... kể từ khi giao dịch bắt đầu khi một con trỏ thực hiện một truy vấn, nhưng kết thúc khi COMMIT hoặc ROLLBACK được thực hiện bởi các đối tượng Connection.
import MySQLdb
db = MySQLdb.connect(user="root", db="test")
c = db.cursor()
c.execute("SELECT * FROM books")
print c.fetchall()
Tôi nghi ngờ rằng MySQLdb bắt đầu một giao dịch thậm chí trên các truy vấn mà không sửa đổi dữ liệu (như SELECT), bởi vì rất khó để biết nếu một truy vấn chỉ đọc dữ liệu và không viết nó.
- Có đúng không?
- Nếu có, điều này có nghĩa là tôi nên làm
cursor.commit()
sau mỗi truy vấn, để đảm bảo rằng không có bảng nào bị khóa? - Các vấn đề khác mà tôi không biết?
Cảm ơn bạn
Ông có thể vui lòng giải thích ví dụ của bạn, và tại sao 'commit' vẫn cần thiết? – warvariuc
@warwaruk: câu hỏi này có được cập nhật không? Bởi vì tôi nhớ rằng nó khác. – DonCallisto
Không, nó không được cập nhật ... – warvariuc