在sqlalchemy中通过orm事件的类型装饰器之后获取值



我正在尝试用orm事件对我的数据库进行审计跟踪,目前正在捕获after_update、insert和delete事件中的数据。然后将其记录在after_commit中。

这在很大程度上起到了很好的作用。我正在使用dict方法获取记录的值。唯一的问题是,它在类型装饰器中的bind_processor之前给了我值。

所以我的问题是。是否可以在应用bind_processor的情况下获取表单记录对象的值?

所以我设法找到了一个解决方案,我觉得在bind_processor之后必须有一种更简单的方法来获取数据,但这就完成了任务。

我把这个方法添加到了我的子类基类中。

def bind_processed_dict(self):
"""Returns a dictionary of all column values after going through their bind processor"""
value_dict = self.__dict__
ret_dict = {}
for col_name, col in self.__table__.columns.items():
bindprocessor = col.type.bind_processor(dialect=engine.dialect)
val = value_dict[col_name]
if bindprocessor is not None:
val = bindprocessor(val)
ret_dict[col_name] = val
return ret_dict

最新更新