在SQLAlchemy的教程中,它提到了"instrumentation",但似乎没有正确定义什么是instrumentation:
这些类属性以Python描述符的形式存在,并为映射的类定义检测.此检测的功能包括触发更改事件,跟踪修改以及在需要时自动从数据库加载新数据的功能.
在这种情况下,什么是仪器?
instrumentation是将属性附加到类的过程,它实现为Python描述符(在该句中提到此链接),以便任何属性获取,设置或删除操作,即:
# __get__
print myobject.someattribute
# __set__
myobject.someattribute = "foo"
# __del__
del myoject.someattribute
Run Code Online (Sandbox Code Playgroud)
...将为每个事件调用Python代码,而不是使用Python myobject.__dict__直接访问/操作的默认行为.SQLAlchemy利用这些钩子来提供诸如延迟加载之类的行为,以及记录属性值何时发生变化,以实现工作单元模式,其中只有那些已更改的元素被转换为UPDATE语句在刷新时发送到数据库.