Приборы альтернативного класса

Расширяемое инструментальное обеспечение классов.

Пакет sqlalchemy.ext.instrumentation обеспечивает альтернативные системы инструментария классов в ORM. Под инструментарием класса понимается то, как ORM размещает на классе атрибуты, которые хранят данные и отслеживают изменения этих данных, а также крючки событий, установленные на классе.

Примечание

Пакет расширения предоставляется в целях интеграции с другими пакетами управления объектами, которые уже выполняют собственный инструментарий. Он не предназначен для общего использования.

Примеры использования расширения инструментария приведены в примере Инструментарий атрибутов.

Справочник по API

Object Name Description

ExtendedInstrumentationRegistry

Расширяет InstrumentationFactory дополнительным бухгалтерским учетом, позволяющим использовать несколько типов менеджеров классов.

instrumentation_finders

Расширяемая последовательность вызываемых элементов, возвращающих реализации инструментария

INSTRUMENTATION_MANAGER

Атрибут выбирает пользовательский инструментарий, если он присутствует в отображаемом классе.

InstrumentationFactory

Фабрика для новых экземпляров ClassManager.

InstrumentationManager

Пользовательское расширение инструментария класса.

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.

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)
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 дополнительным бухгалтерским учетом, позволяющим использовать несколько типов менеджеров классов.

Вернуться на верх