Alternate Class Instrumentation

Erweiterbare Klasseninstrumentierung.

Das Paket sqlalchemy.ext.instrumentation bietet alternative Systeme zur Klasseninstrumentierung innerhalb des ORM. Klasseninstrumentierung bezieht sich darauf, wie das ORM Attribute auf der Klasse platziert, die Daten pflegen und Änderungen an diesen Daten verfolgen, sowie auf Ereignishaken, die auf der Klasse installiert sind.

Hinweis

Das Erweiterungspaket wird zum Vorteil der Integration mit anderen Objektverwaltungspaketen bereitgestellt, die bereits ihre eigene Instrumentierung durchführen. Es ist nicht für den allgemeinen Gebrauch bestimmt.

Beispiele für die Verwendung der Instrumentierungserweiterung finden Sie im Beispiel Attributinstrumentierung.

API-Referenz

Objektname Beschreibung

ExtendedInstrumentationRegistry

Erweitert InstrumentationFactory mit zusätzlicher Buchführung, um mehrere Arten von Klassenmanagern zu unterstützen.

instrumentation_finders

Eine erweiterbare Sequenz von aufrufbaren Objekten, die Instrumentierungsimplementierungen zurückgeben.

INSTRUMENTATION_MANAGER

Attribut, wählt benutzerdefinierte Instrumentierung, wenn sie auf einer zugeordneten Klasse vorhanden ist.

InstrumentationFactory

Factory für neue ClassManager-Instanzen.

InstrumentationManager

Benutzerdefinierte Klasseninstrumentierungserweiterung.

sqlalchemy.ext.instrumentation.INSTRUMENTATION_MANAGER = '__sa_instrumentation_manager__'

Attribut, wählt benutzerdefinierte Instrumentierung, wenn sie auf einer zugeordneten Klasse vorhanden ist.

Ermöglicht einer Klasse, eine leicht oder stark abweichende Technik zur Verfolgung von Änderungen an zugeordneten Attributen und Sammlungen anzugeben.

Nur eine Instrumentierungsimplementierung ist in einer gegebenen Objektvererbungshierarchie zulässig.

Der Wert dieses Attributs muss aufrufbar sein und erhält ein Klassenobjekt übergeben. Der Aufrufbare muss eines der folgenden zurückgeben:

  • Eine Instanz eines InstrumentationManager oder einer Unterklasse

  • Ein Objekt, das alle oder einige der InstrumentationManager implementiert (TODO)

  • Ein Wörterbuch mit aufrufbaren Objekten, die alle oder einige der oben genannten implementieren (TODO)

  • Eine Instanz eines ClassManager oder einer Unterklasse

Dieses Attribut wird von der SQLAlchemy-Instrumentierungsauflösung konsultiert, sobald das Modul sqlalchemy.ext.instrumentation importiert wurde. Wenn benutzerdefinierte Finder in der globalen Liste instrumentation_finders installiert sind, entscheiden diese möglicherweise, ob dieses Attribut beachtet werden soll oder nicht.

class sqlalchemy.orm.instrumentation.InstrumentationFactory

Factory für neue ClassManager-Instanzen.

Klassensignatur

class sqlalchemy.orm.instrumentation.InstrumentationFactory (sqlalchemy.event.registry.EventTarget)

class sqlalchemy.ext.instrumentation.InstrumentationManager

Benutzerdefinierte Klasseninstrumentierungserweiterung.

InstrumentationManager kann unterklasifiziert werden, um zu ändern, wie die Klasseninstrumentierung fortgesetzt wird. Diese Klasse existiert für die Integration mit anderen Objektverwaltungswerkzeugen, die die Instrumentierungsmethodik des ORM vollständig ändern möchten, und ist nicht für den regelmäßigen Gebrauch bestimmt. Für die Abfangung von Klasseninstrumentierungsereignissen siehe InstrumentationEvents.

Die API dieser Klasse sollte als halb stabil betrachtet werden und kann sich mit neuen Versionen leicht ändern.

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>]

Eine erweiterbare Sequenz von aufrufbaren Objekten, die Instrumentierungsimplementierungen zurückgeben.

Wenn eine Klasse registriert wird, erhält jeder Aufrufbare ein Klassenobjekt übergeben. Wenn None zurückgegeben wird, wird der nächste Finder in der Sequenz konsultiert. Andernfalls muss die Rückgabe eine Instrumentierungsfactory sein, die den gleichen Richtlinien wie sqlalchemy.ext.instrumentation.INSTRUMENTATION_MANAGER folgt.

Standardmäßig ist der einzige Finder find_native_user_instrumentation_hook, der nach INSTRUMENTATION_MANAGER sucht. Wenn alle Finder None zurückgeben, wird die Standard-ClassManager-Instrumentierung verwendet.

class sqlalchemy.ext.instrumentation.ExtendedInstrumentationRegistry

Erweitert InstrumentationFactory mit zusätzlicher Buchführung, um mehrere Arten von Klassenmanagern zu unterstützen.