Ale*_*xei 5 python orm sqlalchemy
在 SQLAlchemy ORM 中,可以使用以下代码挂钩所有表和列的属性设置事件:
@event.listens_for(Base, 'attribute_instrument')
def configure_listener(class_, key, inst):
if not hasattr(inst.property, 'columns'):
return
@event.listens_for(inst, "set", retval=True)
def set_column_value(instance, value, oldvalue, initiator):
column = inst.property.columns[0]
# HOOK CODE
logging.info("%s: %s -> %s" % (inst.property.columns[0], oldvalue, value))
return value
Run Code Online (Sandbox Code Playgroud)
但这种方法并不适合人际关系。作为关系的表属性不会经过此事件,而官方指南没有说明该关系的属性不会被事件处理。那么问题来了:SQLAlchemy 有什么方法可以挂钩事件并结合关系属性修改吗?
备注:我希望因为通过外键列与其他表链接的关系,然后修改此(外键)列将生成一个事件,但我错了:只有当记录已经具有有效的 Id 时才是 true,否则(当对象尚未添加到数据库)此事件未引发。
init_collection我认为1.0 sqlalchemy现在有一个事件
http://docs.sqlalchemy.org/en/latest/orm/events.html#attribute-events
| 归档时间: |
|
| 查看次数: |
956 次 |
| 最近记录: |