Vấn đề là tôi không thể tìm ra cách sử dụng SQLAlchemy để thông báo cho tôi khi một đối tượng đi vào trạng thái mới.Làm cách nào để có được trạng thái trước của đối tượng SQLAlchemy ORM sau khi cập nhật db?
Tôi đang sử dụng SQLAlchemy ORM (Declarative) để cập nhật một đối tượng:
class Customer(declarative_base()):
__table_name__ = "customer"
id = Column(Integer, primary_key=True)
status = Column(String)
Tôi muốn biết khi một đối tượng chuyển sang trạng thái. Đặc biệt sau khi một UPDATE đã được ban hành và khi nhà nước thay đổi. Ví dụ. Customer.status == 'registered'
và trước đây nó có trạng thái khác.
tôi đang làm điều này với một sự kiện 'set'
thuộc tính:
from sqlalchemy import event
from model import Customer
def on_set_attribute(target, value, oldvalue, initiator):
print target.status
print value
print oldvalue
event.listen(
Customer.status,
'set',
on_set_attribute,
propagate=True,
active_history=True)
Mã của tôi bắn mỗi khi 'đặt' được gọi là trên thuộc tính đó, và tôi kiểm tra xem value
và oldvalue
là khác nhau. Vấn đề là thông số target
chưa được tạo thành đầy đủ nên nó chưa có tất cả các giá trị thuộc tính.
Có cách nào tốt hơn để thực hiện việc này không? Cảm ơn!