4
在SQLAlchemy's tutorial,它提到了“仪器”,但似乎并没有正确地定义什么是仪表:什么是SQLAlchemy上下文中的“instrumentation”?
这些类属性像Python描述符存在,并定义 仪器为被映射的类。此仪器的功能包括能够触发更改事件,跟踪修改,并在需要时自动从数据库加载新数据。
这种情况下的仪表是什么?
在SQLAlchemy's tutorial,它提到了“仪器”,但似乎并没有正确地定义什么是仪表:什么是SQLAlchemy上下文中的“instrumentation”?
这些类属性像Python描述符存在,并定义 仪器为被映射的类。此仪器的功能包括能够触发更改事件,跟踪修改,并在需要时自动从数据库加载新数据。
这种情况下的仪表是什么?
仪器是属性附加到一类,它们作为Python Descriptors实现(这链路在该句子中提到)的过程,使得任何属性获取,设置或删除操作,即:
# __get__
print myobject.someattribute
# __set__
myobject.someattribute = "foo"
# __del__
del myoject.someattribute
...将为每个事件调用Python代码,而不是使用Python直接访问/操作myobject.__dict__
的默认行为。 SQLAlchemy利用这些钩子来提供诸如lazy loading之类的行为,并记录属性值何时更改,以实现unit of work模式,其中只有那些已更改的元素将滚动到要发送的UPDATE语句中刷新到数据库。
询问关于仪器事件的相同问题http://docs.sqlalchemy.org/en/rel_0_9/orm/events.html#module-sqlalchemy.orm.instrumentation,但由于关键字非常通用,因此使用Google搜索没有得到有用的结果。感谢您提出这个问题! – Devy 2016-04-19 18:25:39