什么是SQLAlchemy上下文中的"工具"?

Mat*_*tty 5 python sqlalchemy

SQLAlchemy的教程中,它提到了"instrumentation",但似乎没有正确定义什么是instrumentation:

这些类属性以Python描述符的形式存在,并为映射的类定义检测.此检测的功能包括触发更改事件,跟踪修改以及在需要时自动从数据库加载新数据的功能.

在这种情况下,什么是仪器?

zzz*_*eek 7

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语句在刷新时发送到数据库.