Приборы альтернативного класса¶
Расширяемое инструментальное обеспечение классов.
Пакет sqlalchemy.ext.instrumentation
обеспечивает альтернативные системы инструментария классов в ORM. Под инструментарием класса понимается то, как ORM размещает на классе атрибуты, которые хранят данные и отслеживают изменения этих данных, а также крючки событий, установленные на классе.
Примечание
Пакет расширения предоставляется в целях интеграции с другими пакетами управления объектами, которые уже выполняют собственный инструментарий. Он не предназначен для общего использования.
Примеры использования расширения инструментария приведены в примере Инструментарий атрибутов.
Справочник по API¶
Object Name | Description |
---|---|
Расширяет |
|
Расширяемая последовательность вызываемых элементов, возвращающих реализации инструментария |
|
Атрибут выбирает пользовательский инструментарий, если он присутствует в отображаемом классе. |
|
Фабрика для новых экземпляров ClassManager. |
|
Пользовательское расширение инструментария класса. |
- sqlalchemy.ext.instrumentation.INSTRUMENTATION_MANAGER = '__sa_instrumentation_manager__'¶
Атрибут выбирает пользовательский инструментарий, если он присутствует в отображаемом классе.
Позволяет классу задать немного или сильно отличающуюся технику отслеживания изменений, вносимых в отображаемые атрибуты и коллекции.
В данной иерархии наследования объектов допускается только одна реализация инструментария.
Значением этого атрибута должен быть вызываемый объект, которому передается объект класса. Вызываемый объект должен возвращать одно из следующих значений:
Экземпляр
InstrumentationManager
или подклассОбъект, реализующий все или некоторые функции InstrumentationManager (TODO)
Словарь callables, реализующих все или некоторые из вышеперечисленных функций (TODO)
Экземпляр
ClassManager
или подкласс
Этот атрибут используется при разрешении инструментария SQLAlchemy после импорта модуля
sqlalchemy.ext.instrumentation
. Если в глобальном списке instrumentation_finders установлены пользовательские искатели, то они могут принимать или не принимать во внимание этот атрибут.
- class sqlalchemy.orm.instrumentation.InstrumentationFactory¶
Фабрика для новых экземпляров ClassManager.
Классическая подпись.
класс
sqlalchemy.orm.instrumentation.InstrumentationFactory
(sqlalchemy.event.registry.EventTarget
)
- class sqlalchemy.ext.instrumentation.InstrumentationManager¶
Пользовательское расширение инструментария класса.
InstrumentationManager
может быть подклассифицирован для того, чтобы изменить способ инструментации класса. Этот класс существует для целей интеграции с другими механизмами управления объектами, которые хотели бы полностью изменить методологию инструментации ORM, и не предназначен для регулярного использования. О перехвате событий инструментации классов см. разделInstrumentationEvents
.Members
dict_getter(), get_instance_dict(), initialize_instance_dict(), install_descriptor(), install_member(), install_state(), instrument_attribute(), instrument_collection_class(), manage(), manager_getter(), post_configure_attribute(), remove_state(), state_getter(), uninstall_descriptor(), uninstall_member(), unregister()
API для этого класса следует рассматривать как полустабильный, и в новых версиях он может несколько измениться.
-
method
sqlalchemy.ext.instrumentation.InstrumentationManager.
dict_getter(class_)¶
-
method
sqlalchemy.ext.instrumentation.InstrumentationManager.
get_instance_dict(class_, instance)¶
-
method
sqlalchemy.ext.instrumentation.InstrumentationManager.
initialize_instance_dict(class_, instance)¶
-
method
sqlalchemy.ext.instrumentation.InstrumentationManager.
install_descriptor(class_, key, inst)¶
-
method
sqlalchemy.ext.instrumentation.InstrumentationManager.
install_member(class_, key, implementation)¶
-
method
sqlalchemy.ext.instrumentation.InstrumentationManager.
install_state(class_, instance, state)¶
-
method
sqlalchemy.ext.instrumentation.InstrumentationManager.
instrument_attribute(class_, key, inst)¶
-
method
sqlalchemy.ext.instrumentation.InstrumentationManager.
instrument_collection_class(class_, key, collection_class)¶
-
method
sqlalchemy.ext.instrumentation.InstrumentationManager.
manage(class_, manager)¶
-
method
sqlalchemy.ext.instrumentation.InstrumentationManager.
manager_getter(class_)¶
-
method
sqlalchemy.ext.instrumentation.InstrumentationManager.
post_configure_attribute(class_, key, inst)¶
-
method
sqlalchemy.ext.instrumentation.InstrumentationManager.
remove_state(class_, instance)¶
-
method
sqlalchemy.ext.instrumentation.InstrumentationManager.
state_getter(class_)¶
-
method
sqlalchemy.ext.instrumentation.InstrumentationManager.
uninstall_descriptor(class_, key)¶
-
method
sqlalchemy.ext.instrumentation.InstrumentationManager.
uninstall_member(class_, key)¶
-
method
sqlalchemy.ext.instrumentation.InstrumentationManager.
unregister(class_, manager)¶
-
method
- sqlalchemy.ext.instrumentation.instrumentation_finders = [<function find_native_user_instrumentation_hook>]¶
Расширяемая последовательность вызываемых элементов, возвращающих реализации инструментария
Когда класс зарегистрирован, каждому вызываемому объекту передается объект класса. Если возвращается None, то обращается к следующему в последовательности искателю. В противном случае возвращается фабрика инструментария, которая следует тем же принципам, что и sqlalchemy.ext.instrumentation.INSTRUMENTATION_MANAGER.
По умолчанию единственным искателем является find_native_user_instrumentation_hook, который ищет INSTRUMENTATION_MANAGER. Если все искатели возвращают None, то используется стандартная инструментация ClassManager.
- class sqlalchemy.ext.instrumentation.ExtendedInstrumentationRegistry¶
Расширяет
InstrumentationFactory
дополнительным бухгалтерским учетом, позволяющим использовать несколько типов менеджеров классов.Классическая подпись.
класс
sqlalchemy.ext.instrumentation.ExtendedInstrumentationRegistry
(sqlalchemy.orm.instrumentation.InstrumentationFactory
)