Trường hợp sử dụng cụ thể này được chỉ ra trong "Hiểu về tự động gửi":
Có thể kiểm soát hoàn toàn hành vi “tự động gửi” bằng cách sử dụng
Connection.execution_options()
chung phương pháp được cung cấp trênConnection
,Engine
,Executable
, bằng cách sử dụng cờ “tự động gửi” sẽ bật hoặc tắt tính năng tự động gửi cho phạm vi đã chọn. Ví dụ:mộttext()
cấu trúc đại diện cho một thủ tục được lưu trữ mà các cam kết có thể sử dụng nó để một câu lệnh SELECT sẽ đưa ra một COMMIT:engine.execute(text("SELECT my_mutating_procedure()").execution_options(autocommit=True))
Cách SQLAlchemy autocommit phát hiện các hoạt động thay đổi dữ liệu là nó khớp câu lệnh với một mẫu, tìm kiếm những thứ như UPDATE, DELETE và những thứ tương tự. Nó không thể phát hiện xem một hàm / thủ tục được lưu trữ có thực hiện các đột biến hay không và do đó, kiểm soát rõ ràng đối với tự động gửi được cung cấp.
Trình tự được tăng lên ngay cả khi bị lỗi vì nextval()
và setval()
cuộc gọi không bao giờ được khôi phục.