在SQLAlchemy's tutorial中,它提到了“仪器”,但似乎没有正确定义仪器是什么:
这些类属性作为Python描述符和define存在 映射类的检测。此工具的功能包括触发更改事件,跟踪修改和自动执行的功能 在需要时从数据库加载新数据。
在这种背景下,什么是仪器?
答案 0 :(得分:7)
instrumentation是将属性附加到类的过程,它实现为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语句,以便在刷新时发送到数据库。