SQLAlchemy 2.0 Dokumentation
SQLAlchemy ORM
- ORM Schnellstart
- ORM Abgebildete Klassenkonfiguration
- Beziehungskonfiguration
- ORM Abfragehandbuch
- Verwendung der Sitzung
- Ereignisse und Interna
- ORM Events
- ORM Internals¶
AttributeStateCascadeOptionsClassManagerColumnPropertyCompositeCompositePropertyAttributeEventTokenIdentityMapInspectionAttrInspectionAttrInfoInstanceStateInstanceState.async_sessionInstanceState.attrsInstanceState.callablesInstanceState.deletedInstanceState.detachedInstanceState.dictInstanceState.expiredInstanceState.expired_attributesInstanceState.has_identityInstanceState.identityInstanceState.identity_keyInstanceState.is_instanceInstanceState.mapperInstanceState.modifiedInstanceState.objectInstanceState.pendingInstanceState.persistentInstanceState.sessionInstanceState.transientInstanceState.unloadedInstanceState.unloaded_expirableInstanceState.unmodifiedInstanceState.unmodified_intersection()InstanceState.was_deleted
InstrumentedAttributeLoaderCallableStatusMappedMappedColumnMapperPropertyMapperProperty.cascade_iterator()MapperProperty.class_attributeMapperProperty.comparatorMapperProperty.create_row_processor()MapperProperty.do_init()MapperProperty.docMapperProperty.infoMapperProperty.init()MapperProperty.instrument_class()MapperProperty.is_propertyMapperProperty.keyMapperProperty.merge()MapperProperty.parentMapperProperty.post_instrument_class()MapperProperty.set_parent()MapperProperty.setup()
MappedSQLExpressionInspectionAttrExtensionTypeNotExtensionmerge_result()merge_frozen_result()PropComparatorPropComparator.__eq__()PropComparator.__le__()PropComparator.__lt__()PropComparator.__ne__()PropComparator.adapt_to_entity()PropComparator.adapterPropComparator.all_()PropComparator.and_()PropComparator.any()PropComparator.any_()PropComparator.asc()PropComparator.between()PropComparator.bitwise_and()PropComparator.bitwise_lshift()PropComparator.bitwise_not()PropComparator.bitwise_or()PropComparator.bitwise_rshift()PropComparator.bitwise_xor()PropComparator.bool_op()PropComparator.collate()PropComparator.concat()PropComparator.contains()PropComparator.desc()PropComparator.distinct()PropComparator.endswith()PropComparator.has()PropComparator.icontains()PropComparator.iendswith()PropComparator.ilike()PropComparator.in_()PropComparator.is_()PropComparator.is_distinct_from()PropComparator.is_not()PropComparator.is_not_distinct_from()PropComparator.isnot()PropComparator.isnot_distinct_from()PropComparator.istartswith()PropComparator.like()PropComparator.match()PropComparator.not_ilike()PropComparator.not_in()PropComparator.not_like()PropComparator.notilike()PropComparator.notin_()PropComparator.notlike()PropComparator.nulls_first()PropComparator.nulls_last()PropComparator.nullsfirst()PropComparator.nullslast()PropComparator.of_type()PropComparator.op()PropComparator.operate()PropComparator.propertyPropComparator.regexp_match()PropComparator.regexp_replace()PropComparator.reverse_operate()PropComparator.startswith()PropComparator.timetuple
RelationshipRelationshipDirectionRelationshipPropertyRelationshipProperty.ComparatorRelationshipProperty.Comparator.__eq__()RelationshipProperty.Comparator.__init__()RelationshipProperty.Comparator.__ne__()RelationshipProperty.Comparator.adapt_to_entity()RelationshipProperty.Comparator.and_()RelationshipProperty.Comparator.any()RelationshipProperty.Comparator.contains()RelationshipProperty.Comparator.entityRelationshipProperty.Comparator.has()RelationshipProperty.Comparator.in_()RelationshipProperty.Comparator.mapperRelationshipProperty.Comparator.of_type()
RelationshipProperty.cascadeRelationshipProperty.cascade_iterator()RelationshipProperty.declarative_scan()RelationshipProperty.do_init()RelationshipProperty.entityRelationshipProperty.instrument_class()RelationshipProperty.mapperRelationshipProperty.merge()
SQLORMExpressionSynonymSynonymPropertyQueryContextQueryableAttributeUOWTransaction
- ORM Exceptions
- ORM Erweiterungen
- ORM Beispiele
Projektversionen
- Vorheriges: ORM Events
- Nächstes: ORM Exceptions
- Nach oben: Startseite
- Auf dieser Seite
- ORM Internals
AttributeStateCascadeOptionsClassManagerColumnPropertyCompositeCompositePropertyAttributeEventTokenIdentityMapInspectionAttrInspectionAttrInfoInstanceStateInstanceState.async_sessionInstanceState.attrsInstanceState.callablesInstanceState.deletedInstanceState.detachedInstanceState.dictInstanceState.expiredInstanceState.expired_attributesInstanceState.has_identityInstanceState.identityInstanceState.identity_keyInstanceState.is_instanceInstanceState.mapperInstanceState.modifiedInstanceState.objectInstanceState.pendingInstanceState.persistentInstanceState.sessionInstanceState.transientInstanceState.unloadedInstanceState.unloaded_expirableInstanceState.unmodifiedInstanceState.unmodified_intersection()InstanceState.was_deleted
InstrumentedAttributeLoaderCallableStatusMappedMappedColumnMapperPropertyMapperProperty.cascade_iterator()MapperProperty.class_attributeMapperProperty.comparatorMapperProperty.create_row_processor()MapperProperty.do_init()MapperProperty.docMapperProperty.infoMapperProperty.init()MapperProperty.instrument_class()MapperProperty.is_propertyMapperProperty.keyMapperProperty.merge()MapperProperty.parentMapperProperty.post_instrument_class()MapperProperty.set_parent()MapperProperty.setup()
MappedSQLExpressionInspectionAttrExtensionTypeNotExtensionmerge_result()merge_frozen_result()PropComparatorPropComparator.__eq__()PropComparator.__le__()PropComparator.__lt__()PropComparator.__ne__()PropComparator.adapt_to_entity()PropComparator.adapterPropComparator.all_()PropComparator.and_()PropComparator.any()PropComparator.any_()PropComparator.asc()PropComparator.between()PropComparator.bitwise_and()PropComparator.bitwise_lshift()PropComparator.bitwise_not()PropComparator.bitwise_or()PropComparator.bitwise_rshift()PropComparator.bitwise_xor()PropComparator.bool_op()PropComparator.collate()PropComparator.concat()PropComparator.contains()PropComparator.desc()PropComparator.distinct()PropComparator.endswith()PropComparator.has()PropComparator.icontains()PropComparator.iendswith()PropComparator.ilike()PropComparator.in_()PropComparator.is_()PropComparator.is_distinct_from()PropComparator.is_not()PropComparator.is_not_distinct_from()PropComparator.isnot()PropComparator.isnot_distinct_from()PropComparator.istartswith()PropComparator.like()PropComparator.match()PropComparator.not_ilike()PropComparator.not_in()PropComparator.not_like()PropComparator.notilike()PropComparator.notin_()PropComparator.notlike()PropComparator.nulls_first()PropComparator.nulls_last()PropComparator.nullsfirst()PropComparator.nullslast()PropComparator.of_type()PropComparator.op()PropComparator.operate()PropComparator.propertyPropComparator.regexp_match()PropComparator.regexp_replace()PropComparator.reverse_operate()PropComparator.startswith()PropComparator.timetuple
RelationshipRelationshipDirectionRelationshipPropertyRelationshipProperty.ComparatorRelationshipProperty.Comparator.__eq__()RelationshipProperty.Comparator.__init__()RelationshipProperty.Comparator.__ne__()RelationshipProperty.Comparator.adapt_to_entity()RelationshipProperty.Comparator.and_()RelationshipProperty.Comparator.any()RelationshipProperty.Comparator.contains()RelationshipProperty.Comparator.entityRelationshipProperty.Comparator.has()RelationshipProperty.Comparator.in_()RelationshipProperty.Comparator.mapperRelationshipProperty.Comparator.of_type()
RelationshipProperty.cascadeRelationshipProperty.cascade_iterator()RelationshipProperty.declarative_scan()RelationshipProperty.do_init()RelationshipProperty.entityRelationshipProperty.instrument_class()RelationshipProperty.mapperRelationshipProperty.merge()
SQLORMExpressionSynonymSynonymPropertyQueryContextQueryableAttributeUOWTransaction
ORM Internals¶
Wichtige ORM-Konstrukte, die nicht in anderen Abschnitten behandelt werden, sind hier aufgelistet.
| Objektname | Beschreibung |
|---|---|
Ein Token, das während einer Kette von Attribut-Ereignissen weitergegeben wird. |
|
Bietet eine Inspektionsschnittstelle, die einem bestimmten Attribut auf einem bestimmten zugeordneten Objekt entspricht. |
|
Verfolgt die Optionen, die an |
|
Verfolgt Zustandsinformationen auf Klassenebene. |
|
Beschreibt ein Objektattribut, das einer Tabellenspalte oder einem anderen Spaltenausdruck entspricht. |
|
Deklarationskompatibles Frontend für die Klasse |
|
Definiert ein „zusammengesetztes“ zugeordnetes Attribut, das eine Sammlung von Spalten als ein Attribut darstellt. |
|
Eine Basisklasse, die auf alle ORM-Objekte und Attribute angewendet wird, die sich auf Dinge beziehen, die von der Funktion |
|
Symbole, die den Typ der Erweiterung angeben, zu der ein |
|
Fügt das Attribut |
|
Verfolgt Zustandsinformationen auf Instanzebene. |
|
Basisklasse für Deskriptor-Objekte, die Attributereignisse im Namen eines |
|
Eine Aufzählung. |
|
Stellt ein ORM-zugeordnetes Attribut einer zugeordneten Klasse dar. |
|
Ordnet eine einzelne |
|
Deklarationsfront-End für die Klasse |
|
Stellt ein bestimmtes Klassenattribut dar, das von |
|
merge_frozen_result(session, statement, frozen_result[, load]) |
Führt ein |
merge_result(query, iterator[, load]) |
Führt ein Ergebnis in die Sitzung des angegebenen |
Eine Aufzählung. |
|
Definiert SQL-Operationen für ORM-zugeordnete Attribute. |
|
Basisklasse für Deskriptor-Objekte, die Attributereignisse im Namen eines |
|
Beschreibt eine Objekt-Eigenschaft, die ein einzelnes Element oder eine Liste von Elementen enthält, die einer zugehörigen Datenbanktabelle entsprechen. |
|
Aufzählung, die die „Richtung“ einer |
|
Beschreibt eine Objekt-Eigenschaft, die ein einzelnes Element oder eine Liste von Elementen enthält, die einer zugehörigen Datenbanktabelle entsprechen. |
|
Ein Typ, der verwendet werden kann, um jedes ORM-Attribut oder -Objekt anzugeben, das an seiner Stelle fungiert, im Kontext der SQL-Ausdruckserstellung. |
|
Deklarationsfront-End für die Klasse |
|
Bezeichnet einen Attributnamen als Synonym für eine zugeordnete Eigenschaft, sodass das Attribut den Wert und das Ausdrucksverhalten eines anderen Attributs widerspiegelt. |
|
- class sqlalchemy.orm.AttributeState¶
Bietet eine Inspektionsschnittstelle, die einem bestimmten Attribut auf einem bestimmten zugeordneten Objekt entspricht.
Das Objekt
AttributeStatewird über die SammlungInstanceState.attrseiner bestimmtenInstanceStateabgerufen.Mitglieder
from sqlalchemy import inspect insp = inspect(some_mapped_object) attr_state = insp.attrs.some_attribute
-
attribute
sqlalchemy.orm.AttributeState.history¶ Gibt die aktuelle **Pre-Flush**-Änderungshistorie für dieses Attribut über die
History-Schnittstelle zurück.Diese Methode löst **keine** Lader-Aufrufe aus, wenn der Wert des Attributs nicht geladen ist.
Hinweis
Das Attribut-Historie-System verfolgt Änderungen **pro Flush-Basis**. Jedes Mal, wenn die
Sessiongeleert wird, wird die Historie jedes Attributs auf leer zurückgesetzt. DieSessionleert standardmäßig automatisch, jedes Mal wenn eineQueryaufgerufen wird. Optionen zur Steuerung dieses Verhaltens finden Sie unter Flushing.Siehe auch
AttributeState.load_history()- Ruft die Historie unter Verwendung von Lader-Aufrufen ab, wenn der Wert nicht lokal vorhanden ist.get_history()- zugrundeliegende Funktion
-
method
sqlalchemy.orm.AttributeState.load_history() → History¶ Gibt die aktuelle **Pre-Flush**-Änderungshistorie für dieses Attribut über die
History-Schnittstelle zurück.Diese Methode löst Lader-Aufrufe **aus**, wenn der Wert des Attributs nicht geladen ist.
Hinweis
Das Attribut-Historie-System verfolgt Änderungen **pro Flush-Basis**. Jedes Mal, wenn die
Sessiongeleert wird, wird die Historie jedes Attributs auf leer zurückgesetzt. DieSessionleert standardmäßig automatisch, jedes Mal wenn eineQueryaufgerufen wird. Optionen zur Steuerung dieses Verhaltens finden Sie unter Flushing.
-
attribute
sqlalchemy.orm.AttributeState.loaded_value¶ Der aktuelle Wert dieses Attributs, wie er aus der Datenbank geladen wurde.
Wenn der Wert nicht geladen wurde oder anderweitig nicht im Wörterbuch des Objekts vorhanden ist, wird NO_VALUE zurückgegeben.
-
attribute
sqlalchemy.orm.AttributeState.value¶ Gibt den Wert dieses Attributs zurück.
Diese Operation ist äquivalent zum direkten Zugriff auf das Attribut des Objekts oder über
getattr()und löst bei Bedarf alle ausstehenden Lader-Aufrufe aus.
-
attribute
- class sqlalchemy.orm.CascadeOptions¶
Verfolgt die Optionen, die an
relationship.cascadegesendet wurdenKlassensignatur
class
sqlalchemy.orm.CascadeOptions(builtins.frozenset,typing.Generic)
- class sqlalchemy.orm.ClassManager¶
Verfolgt Zustandsinformationen auf Klassenebene.
Mitglieder
deferred_scalar_loader, expired_attribute_loader, has_parent(), manage(), state_getter(), unregister()
Klassensignatur
class
sqlalchemy.orm.ClassManager(sqlalchemy.util.langhelpers.HasMemoized,builtins.dict,typing.Generic,sqlalchemy.event.registry.EventTarget)-
attribute
sqlalchemy.orm.ClassManager.deferred_scalar_loader¶ Veraltet seit Version 1.4: Das Attribut ClassManager.deferred_scalar_loader heißt jetzt expired_attribute_loader.
-
attribute
sqlalchemy.orm.ClassManager.expired_attribute_loader: _ExpiredAttributeLoaderProto¶ früher bekannt als deferred_scalar_loader
-
method
sqlalchemy.orm.ClassManager.has_parent(state: InstanceState[_O], key: str, optimistic: bool = False) → bool¶ TODO
-
method
sqlalchemy.orm.ClassManager.manage()¶ Kennzeichnet diese Instanz als Manager für ihre Klasse.
-
method
sqlalchemy.orm.ClassManager.state_getter()¶ Gibt eine (instance) -> InstanceState-Callable zurück.
„State-Getter“-Callables sollten entweder KeyError oder AttributeError auslösen, wenn keine InstanceState für die Instanz gefunden werden konnte.
-
method
sqlalchemy.orm.ClassManager.unregister() → None¶ Entfernt alle von diesem ClassManager eingerichteten Instrumentierungen.
-
attribute
- class sqlalchemy.orm.ColumnProperty¶
Beschreibt ein Objektattribut, das einer Tabellenspalte oder einem anderen Spaltenausdruck entspricht.
Der öffentliche Konstruktor ist die Funktion
column_property().Mitglieder
expressions, operate(), reverse_operate(), columns_to_assign, declarative_scan(), do_init(), expression, instrument_class(), mapper_property_to_assign, merge()
Klassensignatur
class
sqlalchemy.orm.ColumnProperty(sqlalchemy.orm._MapsColumns,sqlalchemy.orm.StrategizedProperty,sqlalchemy.orm._IntrospectsAnnotations,sqlalchemy.log.Identified)- class Comparator¶
Erzeugt boolesche, Vergleichs- und andere Operatoren für
ColumnProperty-Attribute.Siehe die Dokumentation für
PropComparatorfür eine kurze Übersicht.Klassensignatur
class
sqlalchemy.orm.ColumnProperty.Comparator(sqlalchemy.util.langhelpers.MemoizedSlots,sqlalchemy.orm.PropComparator)-
attribute
sqlalchemy.orm.ColumnProperty.Comparator.expressions: Sequence[NamedColumn[Any]]¶ - Die vollständige Sequenz der Spalten, auf die dieses
Attribut verweist, angepasst an die gerade stattfindende Aliasbildung.
Neu in Version 1.3.17.
Siehe auch
Mapping einer Klasse gegen mehrere Tabellen - Anwendungsbeispiel
-
method
sqlalchemy.orm.ColumnProperty.Comparator.operate(op: OperatorType, *other: Any, **kwargs: Any) → ColumnElement[Any]¶ Operiert auf einem Argument.
Dies ist die niedrigste Ebene der Operation, löst standardmäßig
NotImplementedErroraus.Das Überschreiben dieser Methode in einer Unterklasse kann dazu dienen, ein gemeinsames Verhalten auf alle Operationen anzuwenden. Zum Beispiel kann das Überschreiben von
ColumnOperatorsdazu dienen,func.lower()auf die linke und rechte Seite anzuwenden.class MyComparator(ColumnOperators): def operate(self, op, other, **kwargs): return op(func.lower(self), func.lower(other), **kwargs)
-
method
sqlalchemy.orm.ColumnProperty.Comparator.reverse_operate(op: OperatorType, other: Any, **kwargs: Any) → ColumnElement[Any]¶ Umgekehrte Operation auf ein Argument.
Die Verwendung ist dieselbe wie bei
operate().
-
attribute
-
attribute
sqlalchemy.orm.ColumnProperty.columns_to_assign¶
-
method
sqlalchemy.orm.ColumnProperty.declarative_scan(decl_scan: _ClassScanMapperConfig, registry: _RegistryType, cls: Type[Any], originating_module: str | None, key: str, mapped_container: Type[Mapped[Any]] | None, annotation: _AnnotationScanType | None, extracted_mapped_annotation: _AnnotationScanType | None, is_dataclass_field: bool) → None¶ Führt eine klassenspezifische Initialisierung zum frühen Zeitpunkt des deklarativen Scannens durch.
Neu in Version 2.0.
-
method
sqlalchemy.orm.ColumnProperty.do_init() → None¶ Führt subklassenspezifische Initialisierungsschritte nach der Mapper-Erstellung durch.
Dies ist eine Vorlagenmethode, die von der init()-Methode des
MapperProperty-Objekts aufgerufen wird.
-
attribute
sqlalchemy.orm.ColumnProperty.expression¶ Gibt die primäre Spalte oder den primären Ausdruck für diese ColumnProperty zurück.
Z. B.
class File(Base): # ... name = Column(String(64)) extension = Column(String(8)) filename = column_property(name + "." + extension) path = column_property("C:/" + filename.expression)
-
method
sqlalchemy.orm.ColumnProperty.instrument_class(mapper: Mapper[Any]) → None¶ Hook, der vom Mapper aufgerufen wird, um die Instrumentierung des Klassenattributs, das von dieser MapperProperty verwaltet wird, zu initiieren.
Die MapperProperty ruft hier typischerweise das attributes-Modul auf, um ein InstrumentedAttribute einzurichten.
Dieser Schritt ist der erste von zwei Schritten zur Einrichtung eines InstrumentedAttribute und wird früh im Mapper-Einrichtungsprozess aufgerufen.
Der zweite Schritt ist typischerweise der Schritt init_class_attribute, der von StrategizedProperty über den post_instrument_class()-Hook aufgerufen wird. Dieser Schritt weist dem InstrumentedAttribute (insbesondere der "impl") zusätzlichen Zustand zu, der ermittelt wurde, nachdem die MapperProperty bestimmt hat, welche Art von Persistenzverwaltung sie durchführen muss (z. B. Skalar, Objekt, Sammlung usw.).
-
attribute
sqlalchemy.orm.ColumnProperty.mapper_property_to_assign¶
-
method
sqlalchemy.orm.ColumnProperty.merge(session: Session, source_state: InstanceState[Any], source_dict: _InstanceDict, dest_state: InstanceState[Any], dest_dict: _InstanceDict, load: bool, _recursive: Dict[Any, object], _resolve_conflict_map: Dict[_IdentityKeyType[Any], object]) → None¶ Führt das von dieser MapperProperty dargestellte Attribut von der Quelle zum Zielobjekt zusammen.
- class sqlalchemy.orm.Composite¶
Deklarationskompatibles Frontend für die Klasse
CompositeProperty.Der öffentliche Konstruktor ist die Funktion
composite().Geändert in Version 2.0:
Compositeals deklarativ-kompatible Unterklasse vonCompositePropertyhinzugefügt.Siehe auch
Klassensignatur
class
sqlalchemy.orm.Composite(sqlalchemy.orm.descriptor_props.CompositeProperty,sqlalchemy.orm.base._DeclarativeMapped)
- class sqlalchemy.orm.CompositeProperty¶
Definiert ein „zusammengesetztes“ zugeordnetes Attribut, das eine Sammlung von Spalten als ein Attribut darstellt.
CompositePropertywird mit der Funktioncomposite()konstruiert.Siehe auch
Mitglieder
create_row_processor(), columns_to_assign, declarative_scan(), do_init(), get_history(), instrument_class(), mapper_property_to_assign
Klassensignatur
class
sqlalchemy.orm.CompositeProperty(sqlalchemy.orm._MapsColumns,sqlalchemy.orm._IntrospectsAnnotations,sqlalchemy.orm.descriptor_props.DescriptorProperty)- class Comparator¶
Erzeugt boolesche, Vergleichs- und andere Operatoren für
Composite-Attribute.Siehe das Beispiel in Neudefinition von Vergleichsoperationen für Composites für einen Überblick über die Verwendung sowie die Dokumentation für
PropComparator.Klassensignatur
class
sqlalchemy.orm.CompositeProperty.Comparator(sqlalchemy.orm.PropComparator)
- class CompositeBundle¶
Klassensignatur
class
sqlalchemy.orm.CompositeProperty.CompositeBundle(sqlalchemy.orm.Bundle)-
method
sqlalchemy.orm.CompositeProperty.CompositeBundle.create_row_processor(query: Select[Any], procs: Sequence[Callable[[Row[Any]], Any]], labels: Sequence[str]) → Callable[[Row[Any]], Any]¶ Erzeugt die Funktion "Zeilenverarbeitung" für dieses
Bundle.Kann von Unterklassen überschrieben werden, um benutzerdefiniertes Verhalten bei Abrufergebnissen bereitzustellen. Die Methode erhält zur Abfrageausführungszeit das Statement-Objekt und eine Menge von "Zeilenverarbeitungs"-Funktionen; diese Verarbeitungsfunktionen geben beim Empfang einer Ergebniszeile den einzelnen Attributwert zurück, der dann in jede beliebige Datenstruktur adaptiert werden kann.
Das folgende Beispiel veranschaulicht das Ersetzen der üblichen
Row-Rückgabestruktur durch ein direktes Python-Dictionaryfrom sqlalchemy.orm import Bundle class DictBundle(Bundle): def create_row_processor(self, query, procs, labels): "Override create_row_processor to return values as dictionaries" def proc(row): return dict(zip(labels, (proc(row) for proc in procs))) return proc
Ein Ergebnis des obigen
Bundlegibt Wörterbuchwerte zurückbn = DictBundle("mybundle", MyClass.data1, MyClass.data2) for row in session.execute(select(bn)).where(bn.c.data1 == "d1"): print(row.mybundle["data1"], row.mybundle["data2"])
-
method
-
attribute
sqlalchemy.orm.CompositeProperty.columns_to_assign¶
-
method
sqlalchemy.orm.CompositeProperty.declarative_scan(decl_scan: _ClassScanMapperConfig, registry: _RegistryType, cls: Type[Any], originating_module: str | None, key: str, mapped_container: Type[Mapped[Any]] | None, annotation: _AnnotationScanType | None, extracted_mapped_annotation: _AnnotationScanType | None, is_dataclass_field: bool) → None¶ Führt eine klassenspezifische Initialisierung zum frühen Zeitpunkt des deklarativen Scannens durch.
Neu in Version 2.0.
-
method
sqlalchemy.orm.CompositeProperty.do_init() → None¶ Initialisierung, die erfolgt, nachdem der
Compositeseinem übergeordneten Mapper zugeordnet wurde.
-
method
sqlalchemy.orm.CompositeProperty.get_history(state: InstanceState[Any], dict_: _InstanceDict, passive: PassiveFlag = symbol('PASSIVE_OFF')) → History¶ Bereitgestellt für benutzerdefinierten Code, der attributes.get_history() verwendet.
-
method
sqlalchemy.orm.CompositeProperty.instrument_class(mapper: Mapper[Any]) → None¶ Hook, der vom Mapper aufgerufen wird, um die Instrumentierung des Klassenattributs, das von dieser MapperProperty verwaltet wird, zu initiieren.
Die MapperProperty ruft hier typischerweise das attributes-Modul auf, um ein InstrumentedAttribute einzurichten.
Dieser Schritt ist der erste von zwei Schritten zur Einrichtung eines InstrumentedAttribute und wird früh im Mapper-Einrichtungsprozess aufgerufen.
Der zweite Schritt ist typischerweise der Schritt init_class_attribute, der von StrategizedProperty über den post_instrument_class()-Hook aufgerufen wird. Dieser Schritt weist dem InstrumentedAttribute (insbesondere der "impl") zusätzlichen Zustand zu, der ermittelt wurde, nachdem die MapperProperty bestimmt hat, welche Art von Persistenzverwaltung sie durchführen muss (z. B. Skalar, Objekt, Sammlung usw.).
-
attribute
sqlalchemy.orm.CompositeProperty.mapper_property_to_assign¶
- class sqlalchemy.orm.AttributeEventToken¶
Ein Token, das während einer Kette von Attribut-Ereignissen weitergegeben wird.
Dient als Indikator für die Quelle des Ereignisses und bietet auch eine Möglichkeit, die Ausbreitung über eine Kette von Attributoperationen zu steuern.
Das
Event-Objekt wird alsinitiator-Argument übergeben, wenn Ereignisse wieAttributeEvents.append(),AttributeEvents.set()undAttributeEvents.remove()behandelt werden.Das
Event-Objekt wird derzeit von den Backref-Ereignisbehandlern interpretiert und zur Steuerung der Ausbreitung von Operationen über zwei gegenseitig abhängige Attribute verwendet.Geändert in Version 2.0: Der Name wurde von
AttributeEventinAttributeEventTokengeändert.- Attribut-Impl::
Das
AttributeImpl, das der aktuelle Ereignisinitiator ist.- Attribut-Op::
Das Symbol
OP_APPEND,OP_REMOVE,OP_REPLACEoderOP_BULK_REPLACE, das die Quelle der Operation angibt.
- class sqlalchemy.orm.IdentityMap¶
Mitglieder
-
method
sqlalchemy.orm.IdentityMap.check_modified() → bool¶ Gibt True zurück, wenn irgendeine Instanz von InstanceStates als 'modifiziert' markiert wurde.
-
method
- class sqlalchemy.orm.InspectionAttr¶
Eine Basisklasse, die auf alle ORM-Objekte und Attribute angewendet wird, die sich auf Dinge beziehen, die von der Funktion
inspect()zurückgegeben werden können.Die hier definierten Attribute ermöglichen die Verwendung einfacher boolescher Prüfungen, um grundlegende Fakten über das zurückgegebene Objekt zu testen.
Mitglieder
extension_type, is_aliased_class, is_attribute, is_bundle, is_clause_element, is_instance, is_mapper, is_property, is_selectable
Während die booleschen Prüfungen hier im Grunde die gleichen sind wie die Verwendung der Python isinstance()-Funktion, können die Flags hier verwendet werden, ohne dass alle diese Klassen importiert werden müssen, und auch so, dass das SQLAlchemy-Klassensystem geändert werden kann, während die Flags hier für die zukünftige Kompatibilität beibehalten werden.
-
attribute
sqlalchemy.orm.InspectionAttr.extension_type: InspectionAttrExtensionType = 'not_extension'¶ Der Erweiterungstyp, falls vorhanden. Standard ist
NotExtension.NOT_EXTENSION
-
attribute
sqlalchemy.orm.InspectionAttr.is_aliased_class = False¶ True, wenn dieses Objekt eine Instanz von
AliasedClassist.
-
attribute
sqlalchemy.orm.InspectionAttr.is_attribute = False¶ True, wenn dieses Objekt ein Python Deskriptor ist.
Dies kann sich auf verschiedene Typen beziehen. Normalerweise ein
QueryableAttribute, das Attributereignisse im Auftrag einerMapperPropertybehandelt. Kann aber auch ein Erweiterungstyp wieAssociationProxyoderhybrid_propertysein. DieInspectionAttr.extension_typeverweist auf eine Konstante, die den spezifischen Untertyp identifiziert.Siehe auch
-
attribute
sqlalchemy.orm.InspectionAttr.is_bundle = False¶ True, wenn dieses Objekt eine Instanz von
Bundleist.
-
attribute
sqlalchemy.orm.InspectionAttr.is_clause_element = False¶ True, wenn dieses Objekt eine Instanz von
ClauseElementist.
-
attribute
sqlalchemy.orm.InspectionAttr.is_instance = False¶ True, wenn dieses Objekt eine Instanz von
InstanceStateist.
-
attribute
sqlalchemy.orm.InspectionAttr.is_mapper = False¶ True, wenn dieses Objekt eine Instanz von
Mapperist.
-
attribute
sqlalchemy.orm.InspectionAttr.is_property = False¶ True, wenn dieses Objekt eine Instanz von
MapperPropertyist.
-
attribute
sqlalchemy.orm.InspectionAttr.is_selectable = False¶ Gibt True zurück, wenn dieses Objekt eine Instanz von
Selectableist.
-
attribute
- class sqlalchemy.orm.InspectionAttrInfo¶
Fügt das Attribut
.infozuInspectionAttrhinzu.Der Grund für
InspectionAttrgegenüberInspectionAttrInfoist, dass erstere als Mixin für Klassen kompatibel ist, die__slots__angeben; dies ist im Wesentlichen ein Implementierungsartefakt.Mitglieder
Klassensignatur
class
sqlalchemy.orm.InspectionAttrInfo(sqlalchemy.orm.base.InspectionAttr)-
attribute
sqlalchemy.orm.InspectionAttrInfo.info¶ Info-Dictionary, das mit dem Objekt verbunden ist und es dem Benutzer ermöglicht, benutzerdefinierte Daten mit diesem
InspectionAttrzu verknüpfen.Das Dictionary wird beim ersten Zugriff generiert. Alternativ kann es als Konstruktorargument an die Funktionen
column_property(),relationship()odercomposite()übergeben werden.
-
attribute
- class sqlalchemy.orm.InstanceState¶
Verfolgt Zustandsinformationen auf Instanzebene.
Die
InstanceStateist ein Schlüsselobjekt, das von der SQLAlchemy ORM verwendet wird, um den Zustand eines Objekts zu verfolgen; es wird in dem Moment erstellt, in dem ein Objekt instanziiert wird, typischerweise als Ergebnis der Instrumentierung, die SQLAlchemy auf die__init__()Methode der Klasse anwendet.InstanceStateist auch ein semi-öffentliches Objekt, das zur Laufzeitinspektion des Zustands einer abgebildeten Instanz verfügbar ist, einschließlich Informationen wie ihres aktuellen Status innerhalb einer bestimmtenSessionund Details zu Daten einzelner Attribute. Die öffentliche API zum Erwerb einesInstanceState-Objekts ist die Verwendung desinspect()-Systems.>>> from sqlalchemy import inspect >>> insp = inspect(some_mapped_object) >>> insp.attrs.nickname.history History(added=['new nickname'], unchanged=(), deleted=['nickname'])
Siehe auch
Mitglieder
async_session, attrs, callables, deleted, detached, dict, expired, expired_attributes, has_identity, identity, identity_key, is_instance, mapper, modified, object, pending, persistent, session, transient, unloaded, unloaded_expirable, unmodified, unmodified_intersection(), was_deleted
Klassensignatur
class
sqlalchemy.orm.InstanceState(sqlalchemy.orm.base.InspectionAttrInfo,typing.Generic)-
attribute
sqlalchemy.orm.InstanceState.async_session¶ Gibt die besitzende
AsyncSessionfür diese Instanz zurück, oderNone, wenn keine verfügbar ist.Dieses Attribut ist nur dann nicht
None, wenn diesqlalchemy.ext.asyncioAPI für dieses ORM-Objekt verwendet wird. Das zurückgegebeneAsyncSession-Objekt ist ein Proxy für dasSession-Objekt, das von demInstanceState.session-Attribut für dieseInstanceStatezurückgegeben würde.Neu in Version 1.4.18.
Siehe auch
-
attribute
sqlalchemy.orm.InstanceState.attrs¶ Gibt einen Namespace zurück, der jedes Attribut des abgebildeten Objekts repräsentiert, einschließlich seines aktuellen Werts und seiner Historie.
Das zurückgegebene Objekt ist eine Instanz von
AttributeState. Dieses Objekt ermöglicht die Inspektion der aktuellen Daten innerhalb eines Attributs sowie der Attributhistorie seit dem letzten Flush.
-
attribute
sqlalchemy.orm.InstanceState.callables: Dict[str, Callable[[InstanceState[_O], PassiveFlag], Any]] = {}¶ Ein Namespace, in dem ein pro-Status-Loader-Callable assoziiert werden kann.
In SQLAlchemy 1.0 wird dies nur für Lazy-Loader / Deferred-Loader verwendet, die über Query-Optionen eingerichtet wurden.
Zuvor wurde
callablesauch verwendet, um abgelaufene Attribute anzuzeigen, indem ein Link zum InstanceState selbst in diesem Dictionary gespeichert wurde. Diese Rolle wird jetzt vom Satzexpired_attributesübernommen.
-
attribute
sqlalchemy.orm.InstanceState.deleted¶ Gibt
Truezurück, wenn das Objekt gelöscht ist.Ein Objekt im gelöschten Zustand ist garantiert nicht in der
Session.identity_mapseiner übergeordnetenSessionenthalten; wenn jedoch die Transaktion der Session zurückgerollt wird, wird das Objekt in den persistenten Zustand und die Identitätszuordnung zurückversetzt.Hinweis
Das Attribut
InstanceState.deletedbezieht sich auf einen bestimmten Zustand des Objekts, der zwischen dem "persistenten" und dem "detached"-Zustand auftritt; sobald das Objekt detached ist, gibt das AttributInstanceState.deleted**nicht mehr True** zurück; um zu erkennen, dass ein Zustand gelöscht wurde, unabhängig davon, ob das Objekt mit einerSessionverbunden ist oder nicht, verwenden Sie den AccessorInstanceState.was_deleted.Siehe auch
-
attribute
sqlalchemy.orm.InstanceState.detached¶ Gibt
Truezurück, wenn das Objekt detached ist.Siehe auch
-
attribute
sqlalchemy.orm.InstanceState.dict¶ Gibt das Instanz-Dict zurück, das vom Objekt verwendet wird.
Unter normalen Umständen ist dies immer gleichbedeutend mit dem
__dict__-Attribut des abgebildeten Objekts, es sei denn, ein alternatives Instrumentierungssystem wurde konfiguriert.Wenn das eigentliche Objekt vom Garbage Collector bereinigt wurde, gibt dieser Accessor ein leeres Dictionary zurück.
-
attribute
sqlalchemy.orm.InstanceState.expired: bool = False¶ Wenn
True, ist das Objekt abgelaufen.Siehe auch
-
attribute
sqlalchemy.orm.InstanceState.expired_attributes: Set[str]¶ Der Satz von Schlüsseln, die 'abgelaufen' sind, um vom verzögerten Skalar-Loader des Managers geladen zu werden, vorausgesetzt, es gibt keine ausstehenden Änderungen.
Siehe auch die Sammlung
unmodified, die beim Aktualisieren mit diesem Satz geschnitten wird.
-
attribute
sqlalchemy.orm.InstanceState.has_identity¶ Gibt
Truezurück, wenn dieses Objekt einen Identitätsschlüssel hat.Dies sollte immer den gleichen Wert haben wie der Ausdruck
state.persistentoderstate.detached.
-
attribute
sqlalchemy.orm.InstanceState.identity¶ Gibt die abgebildete Identität des abgebildeten Objekts zurück. Dies ist die vom ORM persistierte Primärschlüsselidentität, die immer direkt an
Query.get()übergeben werden kann.Gibt
Nonezurück, wenn das Objekt keine Primärschlüsselidentität hat.
-
attribute
sqlalchemy.orm.InstanceState.identity_key¶ Gibt den Identitätsschlüssel für das abgebildete Objekt zurück.
Dies ist der Schlüssel, der verwendet wird, um das Objekt innerhalb der
Session.identity_map-Zuordnung zu lokalisieren. Er enthält die Identität, wie sie vonidentityzurückgegeben wird.
-
attribute
sqlalchemy.orm.InstanceState.is_instance: bool = True¶ True, wenn dieses Objekt eine Instanz von
InstanceStateist.
-
attribute
sqlalchemy.orm.InstanceState.mapper¶ Gibt den
Mapperzurück, der für dieses abgebildete Objekt verwendet wird.
-
attribute
sqlalchemy.orm.InstanceState.modified: bool = False¶ Wenn
True, wurde das Objekt geändert.
-
attribute
sqlalchemy.orm.InstanceState.object¶ Gibt das abgebildete Objekt zurück, das von diesem
InstanceStaterepräsentiert wird.Gibt None zurück, wenn das Objekt vom Garbage Collector bereinigt wurde.
-
attribute
sqlalchemy.orm.InstanceState.pending¶ Gibt
Truezurück, wenn das Objekt pending ist.Siehe auch
-
attribute
sqlalchemy.orm.InstanceState.persistent¶ Gibt
Truezurück, wenn das Objekt persistent ist.Ein Objekt im persistenten Zustand ist garantiert in der
Session.identity_mapseiner übergeordnetenSessionenthalten.Siehe auch
-
attribute
sqlalchemy.orm.InstanceState.session¶ Gibt die besitzende
Sessionfür diese Instanz zurück, oderNone, wenn keine verfügbar ist.Beachten Sie, dass das Ergebnis hier in einigen Fällen von
obj in sessionabweichen kann; ein gelöschtes Objekt meldet, dass es nichtin sessionist, aber wenn die Transaktion noch läuft, verweist dieses Attribut immer noch auf diese Session. Erst wenn die Transaktion abgeschlossen ist, wird das Objekt unter normalen Umständen vollständig detached.Siehe auch
-
attribute
sqlalchemy.orm.InstanceState.transient¶ Gibt
Truezurück, wenn das Objekt transient ist.Siehe auch
-
attribute
sqlalchemy.orm.InstanceState.unloaded¶ Gibt den Satz von Schlüsseln zurück, die keinen geladenen Wert haben.
Dies schließt abgelaufene Attribute und alle anderen Attribute ein, die nie gefüllt oder geändert wurden.
-
attribute
sqlalchemy.orm.InstanceState.unloaded_expirable¶ Gleichbedeutend mit
InstanceState.unloaded.Veraltet seit Version 2.0: Das Attribut
InstanceState.unloaded_expirableist veraltet. Bitte verwenden SieInstanceState.unloaded.Dieses Attribut wurde irgendwann als implementierungsspezifisches Detail hinzugefügt und sollte als privat betrachtet werden.
-
attribute
sqlalchemy.orm.InstanceState.unmodified¶ Gibt den Satz von Schlüsseln zurück, die keine unveränderten Änderungen aufweisen.
-
method
sqlalchemy.orm.InstanceState.unmodified_intersection(keys: Iterable[str]) → Set[str]¶ Gibt
self.unmodified.intersection(keys)zurück.
-
attribute
sqlalchemy.orm.InstanceState.was_deleted¶ Gibt True zurück, wenn dieses Objekt im "gelöschten" Zustand ist oder war und nicht wieder persistent gemacht wurde.
Dieses Flag gibt True zurück, sobald das Objekt beim Flush gelöscht wurde. Wenn das Objekt entweder explizit oder durch einen Transaktionsabschluss aus der Session entfernt und in den "detached"-Zustand übergeht, wird dieses Flag weiterhin True melden.
Siehe auch
InstanceState.deleted- bezieht sich auf den "gelöschten" Zustandwas_deleted()- eigenständige Funktion
-
attribute
- class sqlalchemy.orm.InstrumentedAttribute¶
Basisklasse für Deskriptor-Objekte, die Attributereignisse im Namen eines
MapperProperty-Objekts abfangen. Die tatsächlicheMapperPropertyist über das AttributQueryableAttribute.propertyzugänglich.Klassensignatur
class
sqlalchemy.orm.InstrumentedAttribute(sqlalchemy.orm.QueryableAttribute)
- class sqlalchemy.orm.LoaderCallableStatus¶
Eine Aufzählung.
Mitglieder
ATTR_EMPTY, ATTR_WAS_SET, NEVER_SET, NO_VALUE, PASSIVE_CLASS_MISMATCH, PASSIVE_NO_RESULT
Klassensignatur
class
sqlalchemy.orm.LoaderCallableStatus(enum.Enum)-
attribute
sqlalchemy.orm.LoaderCallableStatus.ATTR_EMPTY = 3¶ Symbol, das intern verwendet wird, um anzuzeigen, dass ein Attribut kein Callable hatte.
-
attribute
sqlalchemy.orm.LoaderCallableStatus.ATTR_WAS_SET = 2¶ Symbol, das von einem Loader-Callable zurückgegeben wird, um anzuzeigen, dass der abgerufene Wert oder die Werte ihren Attributen auf dem Zielobjekt zugewiesen wurden.
-
attribute
sqlalchemy.orm.LoaderCallableStatus.NEVER_SET = 4¶ Gleichbedeutend mit NO_VALUE.
Geändert in Version 1.4: NEVER_SET wurde mit NO_VALUE zusammengeführt.
-
attribute
sqlalchemy.orm.LoaderCallableStatus.NO_VALUE = 4¶ Symbol, das als 'vorheriger' Wert eines Attributs platziert werden kann und anzeigt, dass kein Wert für ein Attribut geladen wurde, als es geändert wurde, und Flags anzeigten, dass wir es nicht laden sollten.
-
attribute
sqlalchemy.orm.LoaderCallableStatus.PASSIVE_CLASS_MISMATCH = 1¶ Symbol, das anzeigt, dass ein Objekt für eine bestimmte Primärschlüsselidentität lokal vorhanden ist, aber nicht von der angeforderten Klasse ist. Der Rückgabewert ist daher None und es sollte keine SQL-Abfrage gesendet werden.
-
attribute
sqlalchemy.orm.LoaderCallableStatus.PASSIVE_NO_RESULT = 0¶ Symbol, das von einem Loader-Callable oder einer anderen Attribut-/Historienabfrageoperation zurückgegeben wird, wenn ein Wert basierend auf den Flags des Loader-Callables nicht ermittelt werden konnte.
-
attribute
- class sqlalchemy.orm.Mapped¶
Stellt ein ORM-zugeordnetes Attribut einer zugeordneten Klasse dar.
Diese Klasse repräsentiert die vollständige Deskriptor-Schnittstelle für jedes Klassenattribut, das von der ORM
Mapper-Klasse instrumentiert wurde. Bietet geeignete Informationen für Typüberprüfer wie Pylance und Mypy, damit ORM-abgebildete Attribute korrekt typisiert sind.Die prominenteste Verwendung von
Mappederfolgt in der Deklarativen Abbildung derMapper-Konfiguration, wo sie explizit verwendet wird, um die Konfiguration von ORM-Attributen wiemapped_class()undrelationship()zu steuern.Tipp
Die Klasse
Mappedrepräsentiert Attribute, die direkt vomMapper-Klasse behandelt werden. Sie enthält keine anderen Python-Deskriptor-Klassen, die als Erweiterungen bereitgestellt werden, einschließlich Hybrid-Attribute und des Association Proxy. Während diese Systeme weiterhin ORM-spezifische Oberklassen und Strukturen verwenden, werden sie nicht vomMapperinstrumentiert, sondern stellen ihre eigene Funktionalität bereit, wenn sie auf einer Klasse aufgerufen werden.Neu in Version 1.4.
Klassensignatur
class
sqlalchemy.orm.Mapped(sqlalchemy.orm.base.SQLORMExpression,sqlalchemy.orm.base.ORMDescriptor,sqlalchemy.orm.base._MappedAnnotationBase,sqlalchemy.sql.roles.DDLConstraintColumnRole)
- class sqlalchemy.orm.MappedColumn¶
Ordnet eine einzelne
Columneiner Klasse zu.MappedColumnist eine Spezialisierung der KlasseColumnPropertyund ist auf die deklarative Konfiguration ausgerichtet.Um
MappedColumn-Objekte zu erstellen, verwenden Sie die Konstruktorfunktionmapped_column().Neu in Version 2.0.
Klassensignatur
class
sqlalchemy.orm.MappedColumn(sqlalchemy.orm._IntrospectsAnnotations,sqlalchemy.orm._MapsColumns,sqlalchemy.orm.base._DeclarativeMapped)
- class sqlalchemy.orm.MapperProperty¶
Stellt ein bestimmtes Klassenattribut dar, das von
Mapperzugeordnet wird.Die häufigsten Vorkommen von
MapperPropertysind die zugeordnetenColumn, die in einer Zuordnung als Instanz vonColumnPropertydargestellt wird, und ein Verweis auf eine andere Klasse, die vonrelationship()erzeugt wird und in der Zuordnung als Instanz vonRelationshipdargestellt wird.Mitglieder
cascade_iterator(), class_attribute, comparator, create_row_processor(), do_init(), doc, info, init(), instrument_class(), is_property, key, merge(), parent, post_instrument_class(), set_parent(), setup()
Klassensignatur
class
sqlalchemy.orm.MapperProperty(sqlalchemy.sql.cache_key.HasCacheKey,sqlalchemy.orm._DCAttributeOptions,sqlalchemy.orm.base._MappedAttribute,sqlalchemy.orm.base.InspectionAttrInfo,sqlalchemy.util.langhelpers.MemoizedSlots)-
method
sqlalchemy.orm.MapperProperty.cascade_iterator(type_: str, state: InstanceState[Any], dict_: _InstanceDict, visited_states: Set[InstanceState[Any]], halt_on: Callable[[InstanceState[Any]], bool] | None = None) → Iterator[Tuple[object, Mapper[Any], InstanceState[Any], _InstanceDict]]¶ Iteriert durch Instanzen, die mit der gegebenen Instanz für einen bestimmten „Cascade“ verknüpft sind, beginnend mit dieser MapperProperty.
Gibt einen Iterator von Tupeln (Instanz, Mapper, Zustand) zurück.
Beachten Sie, dass zuerst die „cascade“-Sammlung auf dieser MapperProperty für den gegebenen Typ überprüft wird, bevor cascade_iterator aufgerufen wird.
Diese Methode gilt typischerweise nur für Relationship.
-
attribute
sqlalchemy.orm.MapperProperty.class_attribute¶ Gibt den klassengebundenen Deskriptor zurück, der dieser
MapperPropertyentspricht.Dies ist im Wesentlichen ein
getattr()-Aufrufreturn getattr(self.parent.class_, self.key)
Wenn diese
MapperPropertybeispielsweiseaddressesgenannt würde und die Klasse, der sie zugeordnet ist,Userist, ist diese Sequenz möglich>>> from sqlalchemy import inspect >>> mapper = inspect(User) >>> addresses_property = mapper.attrs.addresses >>> addresses_property.class_attribute is User.addresses True >>> User.addresses.property is addresses_property True
-
attribute
sqlalchemy.orm.MapperProperty.comparator: PropComparator[_T]¶ Die
PropComparator-Instanz, die SQL-Ausdruckskonstruktion im Namen dieses zugeordneten Attributs implementiert.
-
method
sqlalchemy.orm.MapperProperty.create_row_processor(context: ORMCompileState, query_entity: _MapperEntity, path: AbstractEntityRegistry, mapper: Mapper[Any], result: Result[Any], adapter: ORMAdapter | None, populators: _PopulatorDict) → None¶ Erzeugt Zeilenverarbeitungsfunktionen und fügt sie der gegebenen Menge von Populatorenbereichen hinzu.
-
method
sqlalchemy.orm.MapperProperty.do_init() → None¶ Führt subklassenspezifische Initialisierungsschritte nach der Mapper-Erstellung durch.
Dies ist eine Vorlagenmethode, die von der init()-Methode des
MapperProperty-Objekts aufgerufen wird.
-
attribute
sqlalchemy.orm.MapperProperty.doc: str | None¶ optionale Dokumentationszeichenkette
-
attribute
sqlalchemy.orm.MapperProperty.info: _InfoType¶ Info-Dictionary, das mit dem Objekt verbunden ist und es dem Benutzer ermöglicht, benutzerdefinierte Daten mit diesem
InspectionAttrzu verknüpfen.Das Dictionary wird beim ersten Zugriff generiert. Alternativ kann es als Konstruktorargument an die Funktionen
column_property(),relationship()odercomposite()übergeben werden.
-
method
sqlalchemy.orm.MapperProperty.init() → None¶ Wird nach der Erstellung aller Mapper aufgerufen, um Beziehungen zwischen Mappern zu erstellen und andere Initialisierungsschritte nach der Mapper-Erstellung durchzuführen.
-
method
sqlalchemy.orm.MapperProperty.instrument_class(mapper: Mapper[Any]) → None¶ Hook, der vom Mapper aufgerufen wird, um die Instrumentierung des Klassenattributs, das von dieser MapperProperty verwaltet wird, zu initiieren.
Die MapperProperty ruft hier typischerweise das attributes-Modul auf, um ein InstrumentedAttribute einzurichten.
Dieser Schritt ist der erste von zwei Schritten zur Einrichtung eines InstrumentedAttribute und wird früh im Mapper-Einrichtungsprozess aufgerufen.
Der zweite Schritt ist typischerweise der Schritt init_class_attribute, der von StrategizedProperty über den post_instrument_class()-Hook aufgerufen wird. Dieser Schritt weist dem InstrumentedAttribute (insbesondere der "impl") zusätzlichen Zustand zu, der ermittelt wurde, nachdem die MapperProperty bestimmt hat, welche Art von Persistenzverwaltung sie durchführen muss (z. B. Skalar, Objekt, Sammlung usw.).
-
attribute
sqlalchemy.orm.MapperProperty.is_property = True¶ Teil der InspectionAttr-Schnittstelle; gibt an, dass dieses Objekt eine Mapper-Eigenschaft ist.
-
attribute
sqlalchemy.orm.MapperProperty.key: str¶ Name des Klassenattributs
-
method
sqlalchemy.orm.MapperProperty.merge(session: Session, source_state: InstanceState[Any], source_dict: _InstanceDict, dest_state: InstanceState[Any], dest_dict: _InstanceDict, load: bool, _recursive: Dict[Any, object], _resolve_conflict_map: Dict[_IdentityKeyType[Any], object]) → None¶ Führt das von dieser MapperProperty dargestellte Attribut von der Quelle zum Zielobjekt zusammen.
-
attribute
sqlalchemy.orm.MapperProperty.parent: Mapper[Any]¶ der
Mapper, der diese Eigenschaft verwaltet.
-
method
sqlalchemy.orm.MapperProperty.post_instrument_class(mapper: Mapper[Any]) → None¶ Führt Instrumentierungsanpassungen durch, die nach Abschluss von init() erfolgen müssen.
Der angegebene Mapper ist der Mapper, der den Vorgang aufruft, der in einem Vererbungsszenario nicht derselbe Mapper wie self.parent sein kann; Mapper ist jedoch immer zumindest ein Sub-Mapper von self.parent.
Diese Methode wird typischerweise von StrategizedProperty verwendet, die sie an LoaderStrategy.init_class_attribute() delegiert, um die endgültige Einrichtung des klassengebundenen InstrumentedAttribute durchzuführen.
-
method
sqlalchemy.orm.MapperProperty.set_parent(parent: Mapper[Any], init: bool) → None¶ Setzt den übergeordneten Mapper, der auf diese MapperProperty verweist.
Diese Methode wird von einigen Unterklassen überschrieben, um zusätzliche Einrichtungen durchzuführen, wenn der Mapper zum ersten Mal bekannt ist.
-
method
sqlalchemy.orm.MapperProperty.setup(context: ORMCompileState, query_entity: _MapperEntity, path: AbstractEntityRegistry, adapter: ORMAdapter | None, **kwargs: Any) → None¶ Wird von Query zum Zweck der Konstruktion einer SQL-Anweisung aufgerufen.
Jede MapperProperty, die dem Ziel-Mapper zugeordnet ist, verarbeitet die Anweisung, auf die sich der Abfragekontext bezieht, und fügt gegebenenfalls Spalten und/oder Kriterien hinzu.
-
method
- class sqlalchemy.orm.MappedSQLExpression¶
Deklarationsfront-End für die Klasse
ColumnProperty.Der öffentliche Konstruktor ist die Funktion
column_property().Geändert in Version 2.0:
MappedSQLExpressionals deklarationskompatible Unterklasse fürColumnPropertyhinzugefügt.Siehe auch
Klassensignatur
class
sqlalchemy.orm.MappedSQLExpression(sqlalchemy.orm.properties.ColumnProperty,sqlalchemy.orm.base._DeclarativeMapped)
- class sqlalchemy.orm.InspectionAttrExtensionType¶
Symbole, die den Typ der Erweiterung angeben, zu der ein
InspectionAttrgehört.Klassensignatur
class
sqlalchemy.orm.InspectionAttrExtensionType(enum.Enum)
- class sqlalchemy.orm.NotExtension¶
Eine Aufzählung.
Mitglieder
Klassensignatur
class
sqlalchemy.orm.NotExtension(sqlalchemy.orm.base.InspectionAttrExtensionType)-
attribute
sqlalchemy.orm.NotExtension.NOT_EXTENSION = 'not_extension'¶ Symbol, das eine
InspectionAttranzeigt, die nicht Teil von sqlalchemy.ext ist.Wird dem Attribut
InspectionAttr.extension_typezugewiesen.
-
attribute
- function sqlalchemy.orm.merge_result(query: Query[Any], iterator: FrozenResult | Iterable[Sequence[Any]] | Iterable[object], load: bool = True) → FrozenResult | Iterable[Any]¶
Führt ein Ergebnis in die Sitzung des angegebenen
Query-Objekts zusammen.Veraltet seit Version 2.0: Die Funktion
merge_result()wird ab der 1.x-Serie von SQLAlchemy als veraltet betrachtet und wird in 2.0 zu einem veralteten Konstrukt. Die Funktion sowie die Methode aufQuerywird durch die Funktionmerge_frozen_result()abgelöst. (Hintergrund zu SQLAlchemy 2.0 unter: SQLAlchemy 2.0 - Hauptmigrationsanleitung)Siehe
Query.merge_result()für die Top-Level-Dokumentation dieser Funktion.
- function sqlalchemy.orm.merge_frozen_result(session, statement, frozen_result, load=True)¶
Führt ein
FrozenResultzurück in eineSession, wobei ein neuesResult-Objekt mit persistenten Objekten zurückgegeben wird.Siehe den Abschnitt Anweisungen neu ausführen für ein Beispiel.
- class sqlalchemy.orm.PropComparator¶
Definiert SQL-Operationen für ORM-zugeordnete Attribute.
SQLAlchemy ermöglicht die Neudefinition von Operatoren sowohl auf Core- als auch auf ORM-Ebene.
PropComparatorist die Basisklasse für die Neudefinition von Operatoren für ORM-Operationen, einschließlich derer vonColumnProperty,RelationshipundComposite.Benutzerdefinierte Unterklassen von
PropComparatorkönnen erstellt werden. Die integrierten Python-Vergleichs- und mathematischen Operator-Methoden, wie z. B.ColumnOperators.__eq__(),ColumnOperators.__lt__()undColumnOperators.__add__(), können überschrieben werden, um neues Operatorverhalten bereitzustellen. Die benutzerdefiniertePropComparatorwird über das Argumentcomparator_factoryan dieMapperProperty-Instanz übergeben. In jedem Fall sollte die entsprechende Unterklasse vonPropComparatorverwendet werden.# definition of custom PropComparator subclasses from sqlalchemy.orm.properties import ( ColumnProperty, Composite, Relationship, ) class MyColumnComparator(ColumnProperty.Comparator): def __eq__(self, other): return self.__clause_element__() == other class MyRelationshipComparator(Relationship.Comparator): def any(self, expression): "define the 'any' operation" # ... class MyCompositeComparator(Composite.Comparator): def __gt__(self, other): "redefine the 'greater than' operation" return sql.and_( *[ a > b for a, b in zip( self.__clause_element__().clauses, other.__composite_values__(), ) ] ) # application of custom PropComparator subclasses from sqlalchemy.orm import column_property, relationship, composite from sqlalchemy import Column, String class SomeMappedClass(Base): some_column = column_property( Column("some_column", String), comparator_factory=MyColumnComparator, ) some_relationship = relationship( SomeOtherClass, comparator_factory=MyRelationshipComparator ) some_composite = composite( Column("a", String), Column("b", String), comparator_factory=MyCompositeComparator, )
Beachten Sie, dass für die Neudefinition von Operatoren auf Spaltenebene es normalerweise einfacher ist, die Operatoren auf Core-Ebene zu definieren, indem das Attribut
TypeEngine.comparator_factoryverwendet wird. Weitere Details finden Sie unter Neudefinition und Erstellung neuer Operatoren.Mitglieder
__eq__(), __le__(), __lt__(), __ne__(), adapt_to_entity(), adapter, all_(), and_(), any(), any_(), asc(), between(), bitwise_and(), bitwise_lshift(), bitwise_not(), bitwise_or(), bitwise_rshift(), bitwise_xor(), bool_op(), collate(), concat(), contains(), desc(), distinct(), endswith(), has(), icontains(), iendswith(), ilike(), in_(), is_(), is_distinct_from(), is_not(), is_not_distinct_from(), isnot(), isnot_distinct_from(), istartswith(), like(), match(), not_ilike(), not_in(), not_like(), notilike(), notin_(), notlike(), nulls_first(), nulls_last(), nullsfirst(), nullslast(), of_type(), op(), operate(), property, regexp_match(), regexp_replace(), reverse_operate(), startswith(), timetuple
Klassensignatur
sqlalchemy.orm.PropComparator(sqlalchemy.orm.base.SQLORMOperations,typing.Generic,sqlalchemy.sql.expression.ColumnOperators)-
method
sqlalchemy.orm.PropComparator.__eq__(other: Any) → ColumnOperators¶ inherited from the
sqlalchemy.sql.expression.ColumnOperators.__eq__method ofColumnOperatorsImplementiert den
==Operator.Im Spaltenkontext wird die Klausel
a = berzeugt. Wenn das ZielNoneist, wirda IS NULLerzeugt.
-
method
sqlalchemy.orm.PropComparator.__le__(other: Any) → ColumnOperators¶ inherited from the
sqlalchemy.sql.expression.ColumnOperators.__le__method ofColumnOperatorsImplementiert den Operator
<=.In einem Spaltenkontext wird die Klausel
a <= berzeugt.
-
method
sqlalchemy.orm.PropComparator.__lt__(other: Any) → ColumnOperators¶ inherited from the
sqlalchemy.sql.expression.ColumnOperators.__lt__method ofColumnOperatorsImplementiert den Operator
<.In einem Spaltenkontext wird die Klausel
a < berzeugt.
-
method
sqlalchemy.orm.PropComparator.__ne__(other: Any) → ColumnOperators¶ inherited from the
sqlalchemy.sql.expression.ColumnOperators.__ne__method ofColumnOperatorsImplementiert den Operator
!=.In einem Spaltenkontext wird die Klausel
a != berzeugt. Wenn das ZielNoneist, wirda IS NOT NULLerzeugt.
-
method
sqlalchemy.orm.PropComparator.adapt_to_entity(adapt_to_entity: AliasedInsp[Any]) → PropComparator[_T_co]¶ Gibt eine Kopie dieses PropComparators zurück, die die angegebene
AliasedInspverwendet, um entsprechende Ausdrücke zu erzeugen.
-
attribute
sqlalchemy.orm.PropComparator.adapter¶ Erzeugt ein aufrufbares Objekt, das Spaltenausdrücke für eine aliasierte Version dieses Comparators anpasst.
-
method
sqlalchemy.orm.PropComparator.all_() → ColumnOperators¶ inherited from the
ColumnOperators.all_()method ofColumnOperatorsErzeugt eine
all_()Klausel gegen das übergeordnete Objekt.Siehe die Dokumentation für
all_()für Beispiele.Hinweis
Achten Sie darauf, die neuere Methode
ColumnOperators.all_()nicht mit der **veralteten** Version dieser Methode, der MethodeComparator.all(), die spezifisch fürARRAYist und einen anderen Aufrufstil verwendet, zu verwechseln.
-
method
sqlalchemy.orm.PropComparator.and_(*criteria: _ColumnExpressionArgument[bool]) → PropComparator[bool]¶ Fügt zusätzliche Kriterien zur ON-Klausel hinzu, die durch dieses Beziehungsattribut repräsentiert wird.
Z. B.
stmt = select(User).join( User.addresses.and_(Address.email_address != "foo") ) stmt = select(User).options( joinedload(User.addresses.and_(Address.email_address != "foo")) )
Neu in Version 1.4.
-
method
sqlalchemy.orm.PropComparator.any(criterion: _ColumnExpressionArgument[bool] | None = None, **kwargs: Any) → ColumnElement[bool]¶ Gibt einen SQL-Ausdruck zurück, der wahr ist, wenn dieses Element auf ein Mitglied verweist, das dem angegebenen Kriterium entspricht.
Die übliche Implementierung von
any()istComparator.any().
-
method
sqlalchemy.orm.PropComparator.any_() → ColumnOperators¶ inherited from the
ColumnOperators.any_()method ofColumnOperatorsErzeugt eine
any_()Klausel gegen das übergeordnete Objekt.Siehe die Dokumentation für
any_()für Beispiele.Hinweis
Achten Sie darauf, die neuere Methode
ColumnOperators.any_()nicht mit der **veralteten** Version dieser Methode, der MethodeComparator.any(), die spezifisch fürARRAYist und einen anderen Aufrufstil verwendet, zu verwechseln.
-
method
sqlalchemy.orm.PropComparator.asc() → ColumnOperators¶ inherited from the
ColumnOperators.asc()method ofColumnOperatorsErzeugt eine
asc()Klausel gegen das übergeordnete Objekt.
-
method
sqlalchemy.orm.PropComparator.between(cleft: Any, cright: Any, symmetric: bool = False) → ColumnOperators¶ inherited from the
ColumnOperators.between()method ofColumnOperatorsErzeugt eine
between()Klausel gegen das übergeordnete Objekt, gegeben den unteren und oberen Bereich.
-
method
sqlalchemy.orm.PropComparator.bitwise_and(other: Any) → ColumnOperators¶ inherited from the
ColumnOperators.bitwise_and()method ofColumnOperatorsErzeugt eine bitweise AND-Operation, typischerweise über den Operator
&.Neu in Version 2.0.2.
Siehe auch
-
method
sqlalchemy.orm.PropComparator.bitwise_lshift(other: Any) → ColumnOperators¶ inherited from the
ColumnOperators.bitwise_lshift()method ofColumnOperatorsErzeugt eine bitweise LSHIFT-Operation, typischerweise über den Operator
<<.Neu in Version 2.0.2.
Siehe auch
-
method
sqlalchemy.orm.PropComparator.bitwise_not() → ColumnOperators¶ inherited from the
ColumnOperators.bitwise_not()method ofColumnOperatorsErzeugt eine bitweise NOT-Operation, typischerweise über den Operator
~.Neu in Version 2.0.2.
Siehe auch
-
method
sqlalchemy.orm.PropComparator.bitwise_or(other: Any) → ColumnOperators¶ inherited from the
ColumnOperators.bitwise_or()method ofColumnOperatorsErzeugt eine bitweise OR-Operation, typischerweise über den Operator
|.Neu in Version 2.0.2.
Siehe auch
-
method
sqlalchemy.orm.PropComparator.bitwise_rshift(other: Any) → ColumnOperators¶ inherited from the
ColumnOperators.bitwise_rshift()method ofColumnOperatorsErzeugt eine bitweise RSHIFT-Operation, typischerweise über den Operator
>>.Neu in Version 2.0.2.
Siehe auch
-
method
sqlalchemy.orm.PropComparator.bitwise_xor(other: Any) → ColumnOperators¶ inherited from the
ColumnOperators.bitwise_xor()method ofColumnOperatorsErzeugt eine bitweise XOR-Operation, typischerweise über den Operator
^oder#für PostgreSQL.Neu in Version 2.0.2.
Siehe auch
-
method
sqlalchemy.orm.PropComparator.bool_op(opstring: str, precedence: int = 0, python_impl: Callable[[...], Any] | None = None) → Callable[[Any], Operators]¶ inherited from the
Operators.bool_op()method ofOperatorsGibt einen benutzerdefinierten booleschen Operator zurück.
Diese Methode ist eine Kurzform für den Aufruf von
Operators.op()und die Übergabe des FlagsOperators.op.is_comparisonmit True. Ein wichtiger Vorteil der Verwendung vonOperators.bool_op()besteht darin, dass bei der Verwendung von Spaltenkonstrukten die "boolesche" Natur des zurückgegebenen Ausdrucks für PEP 484-Zwecke vorhanden ist.Siehe auch
-
method
sqlalchemy.orm.PropComparator.collate(collation: str) → ColumnOperators¶ geerbt von der
ColumnOperators.collate()Methode vonColumnOperatorsErzeugt eine
collate()Klausel gegen das übergeordnete Objekt, gegeben den Collation-String.Siehe auch
-
Methode
sqlalchemy.orm.PropComparator.concat(other: Any) → ColumnOperators¶ geerbt von der
ColumnOperators.concat()Methode vonColumnOperatorsImplementiert den 'concat'-Operator.
In einem Spaltenkontext erzeugt dies die Klausel
a || boder verwendet denconcat()-Operator unter MySQL.
-
Methode
sqlalchemy.orm.PropComparator.contains(other: Any, **kw: Any) → ColumnOperators¶ geerbt von der
ColumnOperators.contains()Methode vonColumnOperatorsImplementiert den 'contains'-Operator.
Erzeugt einen LIKE-Ausdruck, der gegen eine Übereinstimmung am Ende eines String-Wertes prüft.
column LIKE '%' || <other> || '%'
Z. B.
stmt = select(sometable).where(sometable.c.column.contains("foobar"))
Da der Operator
LIKEverwendet, verhalten sich die Wildcard-Zeichen"%"und"_", die im <other> Ausdruck vorhanden sind, ebenfalls wie Wildcards. Für literale Zeichenwerte kann das FlagColumnOperators.contains.autoescapeaufTruegesetzt werden, um Escape-Zeichen auf Vorkommen dieser Zeichen innerhalb des Zeichenwerts anzuwenden, damit sie als solche und nicht als Wildcard-Zeichen übereinstimmen. Alternativ etabliert der ParameterColumnOperators.contains.escapeein gegebenes Zeichen als Escape-Zeichen, was nützlich sein kann, wenn der Zielausdruck kein literaler Zeichenwert ist.- Parameter:
other¶ – zu vergleichender Ausdruck. Dies ist normalerweise ein einfacher Zeichenwert, kann aber auch ein beliebiger SQL-Ausdruck sein. LIKE-Wildcard-Zeichen
%und_werden standardmäßig nicht escaped, es sei denn, das FlagColumnOperators.contains.autoescapeist auf True gesetzt.autoescape¶ –
Boolean; wenn True, wird ein Escape-Zeichen innerhalb des LIKE-Ausdrucks etabliert und dann auf alle Vorkommen von
"%","_"und des Escape-Zeichens selbst im Vergleichswert angewendet, der als literaler String und nicht als SQL-Ausdruck angenommen wird.Ein Ausdruck wie
somecolumn.contains("foo%bar", autoescape=True)
Wird gerendert als
somecolumn LIKE '%' || :param || '%' ESCAPE '/'
Mit dem Wert von
:paramals"foo/%bar".escape¶ –
ein Zeichen, das bei Angabe mit dem Schlüsselwort
ESCAPEgerendert wird, um dieses Zeichen als Escape-Zeichen zu etablieren. Dieses Zeichen kann dann vor Vorkommen von%und_gestellt werden, damit sie als sie selbst und nicht als Wildcard-Zeichen wirken.Ein Ausdruck wie
somecolumn.contains("foo/%bar", escape="^")
Wird gerendert als
somecolumn LIKE '%' || :param || '%' ESCAPE '^'
Der Parameter kann auch mit
ColumnOperators.contains.autoescapekombiniert werdensomecolumn.contains("foo%bar^bat", escape="^", autoescape=True)
Wo oben der angegebene literale Parameter zu
"foo^%bar^^bat"konvertiert wird, bevor er an die Datenbank übergeben wird.
-
Methode
sqlalchemy.orm.PropComparator.desc() → ColumnOperators¶ geerbt von der
ColumnOperators.desc()Methode vonColumnOperatorsErzeugt eine
desc()Klausel gegen das übergeordnete Objekt.
-
Methode
sqlalchemy.orm.PropComparator.distinct() → ColumnOperators¶ geerbt von der
ColumnOperators.distinct()Methode vonColumnOperatorsErzeugt eine
distinct()Klausel gegen das übergeordnete Objekt.
-
Methode
sqlalchemy.orm.PropComparator.endswith(other: Any, escape: str | None = None, autoescape: bool = False) → ColumnOperators¶ geerbt von der
ColumnOperators.endswith()Methode vonColumnOperatorsImplementiert den 'endswith'-Operator.
Erzeugt einen LIKE-Ausdruck, der gegen eine Übereinstimmung am Ende eines String-Wertes prüft.
column LIKE '%' || <other>
Z. B.
stmt = select(sometable).where(sometable.c.column.endswith("foobar"))
Da der Operator
LIKEverwendet, verhalten sich die Wildcard-Zeichen"%"und"_", die im <other> Ausdruck vorhanden sind, ebenfalls wie Wildcards. Für literale Zeichenwerte kann das FlagColumnOperators.endswith.autoescapeaufTruegesetzt werden, um Escape-Zeichen auf Vorkommen dieser Zeichen innerhalb des Zeichenwerts anzuwenden, damit sie als solche und nicht als Wildcard-Zeichen übereinstimmen. Alternativ etabliert der ParameterColumnOperators.endswith.escapeein gegebenes Zeichen als Escape-Zeichen, was nützlich sein kann, wenn der Zielausdruck kein literaler Zeichenwert ist.- Parameter:
other¶ – zu vergleichender Ausdruck. Dies ist normalerweise ein einfacher Zeichenwert, kann aber auch ein beliebiger SQL-Ausdruck sein. LIKE-Wildcard-Zeichen
%und_werden standardmäßig nicht escaped, es sei denn, das FlagColumnOperators.endswith.autoescapeist auf True gesetzt.autoescape¶ –
Boolean; wenn True, wird ein Escape-Zeichen innerhalb des LIKE-Ausdrucks etabliert und dann auf alle Vorkommen von
"%","_"und des Escape-Zeichens selbst im Vergleichswert angewendet, der als literaler String und nicht als SQL-Ausdruck angenommen wird.Ein Ausdruck wie
somecolumn.endswith("foo%bar", autoescape=True)
Wird gerendert als
somecolumn LIKE '%' || :param ESCAPE '/'
Mit dem Wert von
:paramals"foo/%bar".escape¶ –
ein Zeichen, das bei Angabe mit dem Schlüsselwort
ESCAPEgerendert wird, um dieses Zeichen als Escape-Zeichen zu etablieren. Dieses Zeichen kann dann vor Vorkommen von%und_gestellt werden, damit sie als sie selbst und nicht als Wildcard-Zeichen wirken.Ein Ausdruck wie
somecolumn.endswith("foo/%bar", escape="^")
Wird gerendert als
somecolumn LIKE '%' || :param ESCAPE '^'
Der Parameter kann auch mit
ColumnOperators.endswith.autoescapekombiniert werdensomecolumn.endswith("foo%bar^bat", escape="^", autoescape=True)
Wo oben der angegebene literale Parameter zu
"foo^%bar^^bat"konvertiert wird, bevor er an die Datenbank übergeben wird.
-
Methode
sqlalchemy.orm.PropComparator.has(criterion: _ColumnExpressionArgument[bool] | None = None, **kwargs: Any) → ColumnElement[bool]¶ Gibt einen SQL-Ausdruck zurück, der wahr ist, wenn dieses Element auf ein Mitglied verweist, das dem angegebenen Kriterium entspricht.
Die übliche Implementierung von
has()istComparator.has().
-
Methode
sqlalchemy.orm.PropComparator.icontains(other: Any, **kw: Any) → ColumnOperators¶ geerbt von der
ColumnOperators.icontains()Methode vonColumnOperatorsImplementiert den Operator
icontains, z.B. die Groß-/Kleinschreibung ignorierende Version vonColumnOperators.contains().Erzeugt einen LIKE-Ausdruck, der gegen eine unempfindliche Übereinstimmung in der Mitte eines Zeichenkettenwerts testet.
lower(column) LIKE '%' || lower(<other>) || '%'
Z. B.
stmt = select(sometable).where(sometable.c.column.icontains("foobar"))
Da der Operator
LIKEverwendet, verhalten sich die Wildcard-Zeichen"%"und"_", die im <other> Ausdruck vorhanden sind, ebenfalls wie Wildcards. Für literale Zeichenwerte kann das FlagColumnOperators.icontains.autoescapeaufTruegesetzt werden, um Escape-Zeichen auf Vorkommen dieser Zeichen innerhalb des Zeichenwerts anzuwenden, damit sie als solche und nicht als Wildcard-Zeichen übereinstimmen. Alternativ etabliert der ParameterColumnOperators.icontains.escapeein gegebenes Zeichen als Escape-Zeichen, was nützlich sein kann, wenn der Zielausdruck kein literaler Zeichenwert ist.- Parameter:
other¶ – zu vergleichender Ausdruck. Dies ist normalerweise ein einfacher Zeichenwert, kann aber auch ein beliebiger SQL-Ausdruck sein. LIKE-Wildcard-Zeichen
%und_werden standardmäßig nicht escaped, es sei denn, das FlagColumnOperators.icontains.autoescapeist auf True gesetzt.autoescape¶ –
Boolean; wenn True, wird ein Escape-Zeichen innerhalb des LIKE-Ausdrucks etabliert und dann auf alle Vorkommen von
"%","_"und des Escape-Zeichens selbst im Vergleichswert angewendet, der als literaler String und nicht als SQL-Ausdruck angenommen wird.Ein Ausdruck wie
somecolumn.icontains("foo%bar", autoescape=True)
Wird gerendert als
lower(somecolumn) LIKE '%' || lower(:param) || '%' ESCAPE '/'
Mit dem Wert von
:paramals"foo/%bar".escape¶ –
ein Zeichen, das bei Angabe mit dem Schlüsselwort
ESCAPEgerendert wird, um dieses Zeichen als Escape-Zeichen zu etablieren. Dieses Zeichen kann dann vor Vorkommen von%und_gestellt werden, damit sie als sie selbst und nicht als Wildcard-Zeichen wirken.Ein Ausdruck wie
somecolumn.icontains("foo/%bar", escape="^")
Wird gerendert als
lower(somecolumn) LIKE '%' || lower(:param) || '%' ESCAPE '^'
Der Parameter kann auch mit
ColumnOperators.contains.autoescapekombiniert werdensomecolumn.icontains("foo%bar^bat", escape="^", autoescape=True)
Wo oben der angegebene literale Parameter zu
"foo^%bar^^bat"konvertiert wird, bevor er an die Datenbank übergeben wird.
Siehe auch
-
Methode
sqlalchemy.orm.PropComparator.iendswith(other: Any, escape: str | None = None, autoescape: bool = False) → ColumnOperators¶ geerbt von der
ColumnOperators.iendswith()Methode vonColumnOperatorsImplementiert den Operator
iendswith, z.B. die Groß-/Kleinschreibung ignorierende Version vonColumnOperators.endswith().Erzeugt einen LIKE-Ausdruck, der gegen eine unempfindliche Übereinstimmung am Ende eines Zeichenkettenwerts testet.
lower(column) LIKE '%' || lower(<other>)
Z. B.
stmt = select(sometable).where(sometable.c.column.iendswith("foobar"))
Da der Operator
LIKEverwendet, verhalten sich die Wildcard-Zeichen"%"und"_", die im <other> Ausdruck vorhanden sind, ebenfalls wie Wildcards. Für literale Zeichenwerte kann das FlagColumnOperators.iendswith.autoescapeaufTruegesetzt werden, um Escape-Zeichen auf Vorkommen dieser Zeichen innerhalb des Zeichenwerts anzuwenden, damit sie als solche und nicht als Wildcard-Zeichen übereinstimmen. Alternativ etabliert der ParameterColumnOperators.iendswith.escapeein gegebenes Zeichen als Escape-Zeichen, was nützlich sein kann, wenn der Zielausdruck kein literaler Zeichenwert ist.- Parameter:
other¶ – zu vergleichender Ausdruck. Dies ist normalerweise ein einfacher Zeichenwert, kann aber auch ein beliebiger SQL-Ausdruck sein. LIKE-Wildcard-Zeichen
%und_werden standardmäßig nicht escaped, es sei denn, das FlagColumnOperators.iendswith.autoescapeist auf True gesetzt.autoescape¶ –
Boolean; wenn True, wird ein Escape-Zeichen innerhalb des LIKE-Ausdrucks etabliert und dann auf alle Vorkommen von
"%","_"und des Escape-Zeichens selbst im Vergleichswert angewendet, der als literaler String und nicht als SQL-Ausdruck angenommen wird.Ein Ausdruck wie
somecolumn.iendswith("foo%bar", autoescape=True)
Wird gerendert als
lower(somecolumn) LIKE '%' || lower(:param) ESCAPE '/'
Mit dem Wert von
:paramals"foo/%bar".escape¶ –
ein Zeichen, das bei Angabe mit dem Schlüsselwort
ESCAPEgerendert wird, um dieses Zeichen als Escape-Zeichen zu etablieren. Dieses Zeichen kann dann vor Vorkommen von%und_gestellt werden, damit sie als sie selbst und nicht als Wildcard-Zeichen wirken.Ein Ausdruck wie
somecolumn.iendswith("foo/%bar", escape="^")
Wird gerendert als
lower(somecolumn) LIKE '%' || lower(:param) ESCAPE '^'
Der Parameter kann auch mit
ColumnOperators.iendswith.autoescapekombiniert werdensomecolumn.endswith("foo%bar^bat", escape="^", autoescape=True)
Wo oben der angegebene literale Parameter zu
"foo^%bar^^bat"konvertiert wird, bevor er an die Datenbank übergeben wird.
Siehe auch
-
Methode
sqlalchemy.orm.PropComparator.ilike(other: Any, escape: str | None = None) → ColumnOperators¶ geerbt von der
ColumnOperators.ilike()Methode vonColumnOperatorsImplementiert den
ilikeOperator, z. B. die Groß-/Kleinschreibung-unabhängige LIKE-Abfrage.In einem Spaltenkontext wird ein Ausdruck erzeugt, entweder in der Form
lower(a) LIKE lower(other)
Oder auf Backends, die den ILIKE-Operator unterstützen
a ILIKE other
Z. B.
stmt = select(sometable).where(sometable.c.column.ilike("%foobar%"))
- Parameter:
Siehe auch
-
Methode
sqlalchemy.orm.PropComparator.in_(other: Any) → ColumnOperators¶ geerbt von der
ColumnOperators.in_()Methode vonColumnOperatorsImplementiert den
inOperator.In einem Spaltenkontext wird die Klausel
column IN <other>erzeugt.Der angegebene Parameter
otherkann seinEine Liste von literalen Werten, z. B.
stmt.where(column.in_([1, 2, 3]))
In dieser Aufrufform wird die Liste der Elemente in eine Menge von gebundenen Parametern der gleichen Länge wie die angegebene Liste umgewandelt.
WHERE COL IN (?, ?, ?)
Eine Liste von Tupeln kann bereitgestellt werden, wenn der Vergleich gegen ein
tuple_()mit mehreren Ausdrücken erfolgtfrom sqlalchemy import tuple_ stmt.where(tuple_(col1, col2).in_([(1, 10), (2, 20), (3, 30)]))
Eine leere Liste, z. B.
stmt.where(column.in_([]))
In dieser Aufrufform rendert der Ausdruck einen "leeren Mengen"-Ausdruck. Diese Ausdrücke sind auf einzelne Backends zugeschnitten und versuchen im Allgemeinen, eine leere SELECT-Anweisung als Unterabfrage zu erhalten. Auf SQLite ist der Ausdruck
WHERE col IN (SELECT 1 FROM (SELECT 1) WHERE 1!=1)
Geändert in Version 1.4: Leere IN-Ausdrücke verwenden nun in allen Fällen eine zur Laufzeit generierte SELECT-Unterabfrage.
Ein gebundener Parameter, z.B.
bindparam(), kann verwendet werden, wenn er das Flagbindparam.expandingenthältstmt.where(column.in_(bindparam("value", expanding=True)))
In dieser Aufrufform rendert der Ausdruck einen speziellen nicht-SQL-Platzhalter-Ausdruck, der wie folgt aussieht:
WHERE COL IN ([EXPANDING_value])
Dieser Platzhalter-Ausdruck wird zur Laufzeit der Anweisung abgefangen und in die variable Anzahl von gebundenen Parametern umgewandelt, wie zuvor gezeigt. Wenn die Anweisung ausgeführt würde als
connection.execute(stmt, {"value": [1, 2, 3]})
Die Datenbank würde für jeden Wert einen gebundenen Parameter erhalten.
WHERE COL IN (?, ?, ?)
Neu in Version 1.2: "expanding" gebundene Parameter hinzugefügt.
Wenn eine leere Liste übergeben wird, wird ein spezieller "leere Liste"-Ausdruck gerendert, der für die verwendete Datenbank spezifisch ist. Auf SQLite wäre dies
WHERE COL IN (SELECT 1 FROM (SELECT 1) WHERE 1!=1)
Neu in Version 1.3: "expanding" gebundene Parameter unterstützen nun leere Listen.
ein
select()Konstrukt, was normalerweise ein korrelierter Skalar-Select iststmt.where( column.in_(select(othertable.c.y).where(table.c.x == othertable.c.x)) )
In dieser Aufrufform wird
ColumnOperators.in_()wie angegeben gerendertWHERE COL IN (SELECT othertable.y FROM othertable WHERE othertable.x = table.x)
- Parameter:
other¶ – eine Liste von Literalen, ein
select()Konstrukt oder einbindparam()Konstrukt, das das Flagbindparam.expandingauf True gesetzt enthält.
-
Methode
sqlalchemy.orm.PropComparator.is_(other: Any) → ColumnOperators¶ geerbt von der
ColumnOperators.is_()Methode vonColumnOperatorsImplementiert den
ISOperator.Normalerweise wird
ISautomatisch generiert, wenn mit einem Wert vonNoneverglichen wird, was zuNULLaufgelöst wird. Eine explizite Verwendung vonISkann jedoch wünschenswert sein, wenn auf bestimmten Plattformen mit booleschen Werten verglichen wird.Siehe auch
-
Methode
sqlalchemy.orm.PropComparator.is_distinct_from(other: Any) → ColumnOperators¶ geerbt von der
ColumnOperators.is_distinct_from()Methode vonColumnOperatorsImplementiert den
IS DISTINCT FROMOperator.Rendert auf den meisten Plattformen "a IS DISTINCT FROM b"; auf einigen wie SQLite möglicherweise "a IS NOT b".
-
Methode
sqlalchemy.orm.PropComparator.is_not(other: Any) → ColumnOperators¶ geerbt von der
ColumnOperators.is_not()Methode vonColumnOperatorsImplementiert den
IS NOTOperator.Normalerweise wird
IS NOTautomatisch generiert, wenn mit einem Wert vonNoneverglichen wird, was zuNULLaufgelöst wird. Eine explizite Verwendung vonIS NOTkann jedoch wünschenswert sein, wenn auf bestimmten Plattformen mit booleschen Werten verglichen wird.Geändert in Version 1.4: Der
is_not()Operator wurde vonisnot()in früheren Versionen umbenannt. Der vorherige Name bleibt aus Kompatibilitätsgründen erhalten.Siehe auch
-
Methode
sqlalchemy.orm.PropComparator.is_not_distinct_from(other: Any) → ColumnOperators¶ geerbt von der
ColumnOperators.is_not_distinct_from()Methode vonColumnOperatorsImplementiert den
IS NOT DISTINCT FROMOperator.Rendert auf den meisten Plattformen "a IS NOT DISTINCT FROM b"; auf einigen wie SQLite möglicherweise "a IS b".
Geändert in Version 1.4: Der
is_not_distinct_from()Operator wurde vonisnot_distinct_from()in früheren Versionen umbenannt. Der vorherige Name bleibt aus Kompatibilitätsgründen erhalten.
-
Methode
sqlalchemy.orm.PropComparator.isnot(other: Any) → ColumnOperators¶ geerbt von der
ColumnOperators.isnot()Methode vonColumnOperatorsImplementiert den
IS NOTOperator.Normalerweise wird
IS NOTautomatisch generiert, wenn mit einem Wert vonNoneverglichen wird, was zuNULLaufgelöst wird. Eine explizite Verwendung vonIS NOTkann jedoch wünschenswert sein, wenn auf bestimmten Plattformen mit booleschen Werten verglichen wird.Geändert in Version 1.4: Der
is_not()Operator wurde vonisnot()in früheren Versionen umbenannt. Der vorherige Name bleibt aus Kompatibilitätsgründen erhalten.Siehe auch
-
Methode
sqlalchemy.orm.PropComparator.isnot_distinct_from(other: Any) → ColumnOperators¶ geerbt von der
ColumnOperators.isnot_distinct_from()Methode vonColumnOperatorsImplementiert den
IS NOT DISTINCT FROMOperator.Rendert auf den meisten Plattformen "a IS NOT DISTINCT FROM b"; auf einigen wie SQLite möglicherweise "a IS b".
Geändert in Version 1.4: Der
is_not_distinct_from()Operator wurde vonisnot_distinct_from()in früheren Versionen umbenannt. Der vorherige Name bleibt aus Kompatibilitätsgründen erhalten.
-
Methode
sqlalchemy.orm.PropComparator.istartswith(other: Any, escape: str | None = None, autoescape: bool = False) → ColumnOperators¶ geerbt von der
ColumnOperators.istartswith()Methode vonColumnOperatorsImplementieren Sie den Operator
istartswith, z. B. eine Groß-/Kleinschreibungs-unempfindliche Version vonColumnOperators.startswith().Erzeugt einen LIKE-Ausdruck, der gegen eine unempfindliche Übereinstimmung am Anfang eines Zeichenkettenwerts testet.
lower(column) LIKE lower(<other>) || '%'
Z. B.
stmt = select(sometable).where(sometable.c.column.istartswith("foobar"))
Da der Operator
LIKEverwendet, verhalten sich Platzhalterzeichen"%"und"_", die im <other>-Ausdruck vorhanden sind, ebenfalls wie Platzhalter. Für literale Zeichenkettenwerte kann das FlagColumnOperators.istartswith.autoescapeaufTruegesetzt werden, um Vorkommen dieser Zeichen innerhalb des Zeichenkettenwerts zu maskieren, damit sie als sich selbst und nicht als Platzhalter übereinstimmen. Alternativ legt der ParameterColumnOperators.istartswith.escapeein bestimmtes Zeichen als Escape-Zeichen fest, was nützlich sein kann, wenn der Zielausdruck keine literale Zeichenkette ist.- Parameter:
other¶ – Ausdruck, der verglichen werden soll. Dies ist normalerweise ein einfacher Zeichenkettenwert, kann aber auch ein beliebiger SQL-Ausdruck sein. LIKE-Platzhalterzeichen
%und_werden standardmäßig nicht maskiert, es sei denn, das FlagColumnOperators.istartswith.autoescapeist auf True gesetzt.autoescape¶ –
Boolean; wenn True, wird ein Escape-Zeichen innerhalb des LIKE-Ausdrucks etabliert und dann auf alle Vorkommen von
"%","_"und des Escape-Zeichens selbst im Vergleichswert angewendet, der als literaler String und nicht als SQL-Ausdruck angenommen wird.Ein Ausdruck wie
somecolumn.istartswith("foo%bar", autoescape=True)
Wird gerendert als
lower(somecolumn) LIKE lower(:param) || '%' ESCAPE '/'
Mit dem Wert von
:paramals"foo/%bar".escape¶ –
ein Zeichen, das bei Angabe mit dem Schlüsselwort
ESCAPEgerendert wird, um dieses Zeichen als Escape-Zeichen zu etablieren. Dieses Zeichen kann dann vor Vorkommen von%und_gestellt werden, damit sie als sie selbst und nicht als Wildcard-Zeichen wirken.Ein Ausdruck wie
somecolumn.istartswith("foo/%bar", escape="^")
Wird gerendert als
lower(somecolumn) LIKE lower(:param) || '%' ESCAPE '^'
Der Parameter kann auch mit
ColumnOperators.istartswith.autoescapekombiniert werdensomecolumn.istartswith("foo%bar^bat", escape="^", autoescape=True)
Wo oben der angegebene literale Parameter zu
"foo^%bar^^bat"konvertiert wird, bevor er an die Datenbank übergeben wird.
Siehe auch
-
methode
sqlalchemy.orm.PropComparator.like(other: Any, escape: str | None = None) → ColumnOperators¶ geerbt von der
ColumnOperators.like()-Methode vonColumnOperatorsImplementiert den
likeOperator.In einem Spaltenkontext wird der Ausdruck erzeugt
a LIKE other
Z. B.
stmt = select(sometable).where(sometable.c.column.like("%foobar%"))
- Parameter:
Siehe auch
-
methode
sqlalchemy.orm.PropComparator.match(other: Any, **kwargs: Any) → ColumnOperators¶ geerbt von der
ColumnOperators.match()-Methode vonColumnOperatorsImplementiert einen datenbankspezifischen 'match'-Operator.
ColumnOperators.match()versucht, auf eine MATCH-ähnliche Funktion oder einen Operator aufzulösen, der vom Backend bereitgestellt wird. Beispiele hierfür sindPostgreSQL - rendert
x @@ plainto_tsquery(y)Geändert in Version 2.0:
plainto_tsquery()wird jetzt anstelle vonto_tsquery()für PostgreSQL verwendet; für Kompatibilität mit anderen Formen siehe Volltextsuche.MySQL - rendert
MATCH (x) AGAINST (y IN BOOLEAN MODE)Siehe auch
match- MySQL-spezifische Konstruktion mit zusätzlichen Funktionen.Oracle Database - rendert
CONTAINS(x, y)andere Backends können spezielle Implementierungen bereitstellen.
Backends ohne spezielle Implementierung geben den Operator als „MATCH“ aus. Dies ist beispielsweise mit SQLite kompatibel.
-
methode
sqlalchemy.orm.PropComparator.not_ilike(other: Any, escape: str | None = None) → ColumnOperators¶ geerbt von der
ColumnOperators.not_ilike()-Methode vonColumnOperatorsImplementiert den
NOT ILIKEOperator.Dies entspricht der Verwendung der Negation mit
ColumnOperators.ilike(), d. h.~x.ilike(y).Geändert in Version 1.4: Der Operator
not_ilike()wurde vonnotilike()in früheren Versionen umbenannt. Der vorherige Name bleibt für Abwärtskompatibilität verfügbar.Siehe auch
-
methode
sqlalchemy.orm.PropComparator.not_in(other: Any) → ColumnOperators¶ geerbt von der
ColumnOperators.not_in()-Methode vonColumnOperatorsImplementiert den
NOT INOperator.Dies entspricht der Verwendung der Negation mit
ColumnOperators.in_(), d. h.~x.in_(y).Wenn
othereine leere Sequenz ist, erzeugt der Compiler einen "leeren nicht in"-Ausdruck. Dies ist standardmäßig der Ausdruck "1 = 1", um in allen Fällen true zu ergeben. Diecreate_engine.empty_in_strategykann verwendet werden, um dieses Verhalten zu ändern.Geändert in Version 1.4: Der Operator
not_in()wurde vonnotin_()in früheren Versionen umbenannt. Der vorherige Name bleibt für Abwärtskompatibilität verfügbar.Geändert in Version 1.2: Die Operatoren
ColumnOperators.in_()undColumnOperators.not_in()erzeugen nun standardmäßig einen "statischen" Ausdruck für eine leere IN-Sequenz.Siehe auch
-
methode
sqlalchemy.orm.PropComparator.not_like(other: Any, escape: str | None = None) → ColumnOperators¶ geerbt von der
ColumnOperators.not_like()-Methode vonColumnOperatorsImplementiert den
NOT LIKEOperator.Dies entspricht der Verwendung der Negation mit
ColumnOperators.like(), d. h.~x.like(y).Geändert in Version 1.4: Der Operator
not_like()wurde vonnotlike()in früheren Versionen umbenannt. Der vorherige Name bleibt für Abwärtskompatibilität verfügbar.Siehe auch
-
methode
sqlalchemy.orm.PropComparator.notilike(other: Any, escape: str | None = None) → ColumnOperators¶ geerbt von der
ColumnOperators.notilike()-Methode vonColumnOperatorsImplementiert den
NOT ILIKEOperator.Dies entspricht der Verwendung der Negation mit
ColumnOperators.ilike(), d. h.~x.ilike(y).Geändert in Version 1.4: Der Operator
not_ilike()wurde vonnotilike()in früheren Versionen umbenannt. Der vorherige Name bleibt für Abwärtskompatibilität verfügbar.Siehe auch
-
methode
sqlalchemy.orm.PropComparator.notin_(other: Any) → ColumnOperators¶ geerbt von der
ColumnOperators.notin_()-Methode vonColumnOperatorsImplementiert den
NOT INOperator.Dies entspricht der Verwendung der Negation mit
ColumnOperators.in_(), d. h.~x.in_(y).Wenn
othereine leere Sequenz ist, erzeugt der Compiler einen "leeren nicht in"-Ausdruck. Dies ist standardmäßig der Ausdruck "1 = 1", um in allen Fällen true zu ergeben. Diecreate_engine.empty_in_strategykann verwendet werden, um dieses Verhalten zu ändern.Geändert in Version 1.4: Der Operator
not_in()wurde vonnotin_()in früheren Versionen umbenannt. Der vorherige Name bleibt für Abwärtskompatibilität verfügbar.Geändert in Version 1.2: Die Operatoren
ColumnOperators.in_()undColumnOperators.not_in()erzeugen nun standardmäßig einen "statischen" Ausdruck für eine leere IN-Sequenz.Siehe auch
-
methode
sqlalchemy.orm.PropComparator.notlike(other: Any, escape: str | None = None) → ColumnOperators¶ geerbt von der
ColumnOperators.notlike()-Methode vonColumnOperatorsImplementiert den
NOT LIKEOperator.Dies entspricht der Verwendung der Negation mit
ColumnOperators.like(), d. h.~x.like(y).Geändert in Version 1.4: Der Operator
not_like()wurde vonnotlike()in früheren Versionen umbenannt. Der vorherige Name bleibt für Abwärtskompatibilität verfügbar.Siehe auch
-
methode
sqlalchemy.orm.PropComparator.nulls_first() → ColumnOperators¶ geerbt von der
ColumnOperators.nulls_first()-Methode vonColumnOperatorsErzeugt eine
nulls_first()-Klausel für das übergeordnete Objekt.Geändert in Version 1.4: Der Operator
nulls_first()wurde vonnullsfirst()in früheren Versionen umbenannt. Der vorherige Name bleibt für Abwärtskompatibilität verfügbar.
-
methode
sqlalchemy.orm.PropComparator.nulls_last() → ColumnOperators¶ geerbt von der
ColumnOperators.nulls_last()-Methode vonColumnOperatorsErzeugt eine
nulls_last()-Klausel für das übergeordnete Objekt.Geändert in Version 1.4: Der Operator
nulls_last()wurde vonnullslast()in früheren Versionen umbenannt. Der vorherige Name bleibt für Abwärtskompatibilität verfügbar.
-
methode
sqlalchemy.orm.PropComparator.nullsfirst() → ColumnOperators¶ geerbt von der
ColumnOperators.nullsfirst()-Methode vonColumnOperatorsErzeugt eine
nulls_first()-Klausel für das übergeordnete Objekt.Geändert in Version 1.4: Der Operator
nulls_first()wurde vonnullsfirst()in früheren Versionen umbenannt. Der vorherige Name bleibt für Abwärtskompatibilität verfügbar.
-
methode
sqlalchemy.orm.PropComparator.nullslast() → ColumnOperators¶ geerbt von der
ColumnOperators.nullslast()-Methode vonColumnOperatorsErzeugt eine
nulls_last()-Klausel für das übergeordnete Objekt.Geändert in Version 1.4: Der Operator
nulls_last()wurde vonnullslast()in früheren Versionen umbenannt. Der vorherige Name bleibt für Abwärtskompatibilität verfügbar.
-
methode
sqlalchemy.orm.PropComparator.of_type(class_: _EntityType[Any]) → PropComparator[_T_co]¶ Definieren Sie dieses Objekt neu in Form eines polymorphen Unterklassenkonstrukts, eines
with_polymorphic()-Konstrukts oder einesaliased()-Konstrukts.Gibt einen neuen PropComparator zurück, von dem aus weitere Kriterien ausgewertet werden können.
z. B.
query.join(Company.employees.of_type(Engineer)).filter( Engineer.name == "foo" )
- Parameter:
class_¶ – eine Klasse oder ein Mapper, der angibt, dass die Kriterien gegen diese spezielle Unterklasse ausgewertet werden.
-
methode
sqlalchemy.orm.PropComparator.op(opstring: str, precedence: int = 0, is_comparison: bool = False, return_type: Type[TypeEngine[Any]] | TypeEngine[Any] | None = None, python_impl: Callable[..., Any] | None = None) → Callable[[Any], Operators]¶ geerbt von der
Operators.op()-Methode vonOperatorsErzeugt eine generische Operatorfunktion.
z. B.
somecolumn.op("*")(5)
produziert
somecolumn * 5
Diese Funktion kann auch verwendet werden, um bitweise Operatoren explizit zu machen. Zum Beispiel
somecolumn.op("&")(0xFF)
ist ein bitweises UND des Wertes in
somecolumn.- Parameter:
opstring¶ – eine Zeichenkette, die als Infix-Operator zwischen diesem Element und dem an die generierte Funktion übergebenen Ausdruck ausgegeben wird.
precedence¶ –
die Priorität, die die Datenbank erwartungsgemäß auf den Operator in SQL-Ausdrücken anwenden soll. Dieser ganzzahlige Wert dient als Hinweis für den SQL-Compiler, wann explizite Klammern um eine bestimmte Operation gerendert werden sollen. Ein niedrigerer Wert führt dazu, dass der Ausdruck bei der Anwendung auf einen anderen Operator mit höherer Priorität geklammert wird. Der Standardwert von
0ist niedriger als alle Operatoren, außer dem Komma (,) und demASOperator. Ein Wert von 100 ist höher oder gleich allen Operatoren und -100 ist niedriger oder gleich allen Operatoren.Siehe auch
Ich verwende op() zur Erzeugung eines benutzerdefinierten Operators und meine Klammern werden nicht richtig ausgegeben - detaillierte Beschreibung, wie der SQLAlchemy SQL-Compiler Klammern rendert
is_comparison¶ –
veraltet; wenn True, wird der Operator als "Vergleichsoperator" betrachtet, d. h. er ergibt einen booleschen Wahr/Falsch-Wert, wie z. B.
==,>usw. Dieses Flag wird bereitgestellt, damit ORM-Beziehungen feststellen können, dass der Operator ein Vergleichsoperator ist, wenn er in einer benutzerdefinierten Join-Bedingung verwendet wird.Die Verwendung des Parameters
is_comparisonwird durch die Verwendung der MethodeOperators.bool_op()ersetzt; dieser kürzere Operator setzt diesen Parameter automatisch, bietet aber auch korrekte PEP 484-Typunterstützung, da das zurückgegebene Objekt einen "booleschen" Datentyp ausdrückt, d. h.BinaryExpression[bool].return_type¶ – eine
TypeEngine-Klasse oder ein Objekt, das den Rückgabetyp eines von diesem Operator erzeugten Ausdrucks auf diesen Typ erzwingt. Standardmäßig werden Operatoren, dieOperators.op.is_comparisonangeben, zuBooleanaufgelöst, und solche, die dies nicht tun, haben den gleichen Typ wie der linke Operand.python_impl¶ –
eine optionale Python-Funktion, die zwei Python-Werte auf die gleiche Weise auswerten kann, wie dieser Operator auf dem Datenbankserver funktioniert. Nützlich für die SQL-Ausdrucksauswertung innerhalb von Python, z. B. für ORM-Hybridattribute und den ORM "Evaluator", der verwendet wird, um Objekte in einer Sitzung nach einem Mehrzeilen-Update oder -Löschvorgang abzugleichen.
z. B.
>>> expr = column("x").op("+", python_impl=lambda a, b: a + b)("y")
Der Operator für den obigen Ausdruck funktioniert auch für nicht-SQL-linke und rechte Objekte
>>> expr.operator(5, 10) 15
Neu in Version 2.0.
-
methode
sqlalchemy.orm.PropComparator.operate(op: OperatorType, *other: Any, **kwargs: Any) → Operators¶ geerbt von der
Operators.operate()-Methode vonOperatorsOperiert auf einem Argument.
Dies ist die niedrigste Ebene der Operation, löst standardmäßig
NotImplementedErroraus.Das Überschreiben dieser Methode in einer Unterklasse kann dazu dienen, ein gemeinsames Verhalten auf alle Operationen anzuwenden. Zum Beispiel kann das Überschreiben von
ColumnOperatorsdazu dienen,func.lower()auf die linke und rechte Seite anzuwenden.class MyComparator(ColumnOperators): def operate(self, op, other, **kwargs): return op(func.lower(self), func.lower(other), **kwargs)
-
attribut
sqlalchemy.orm.PropComparator.property¶ Gibt die zu diesem
PropComparatorzugehörigeMapperPropertyzurück.Die Rückgabewerte sind hier üblicherweise Instanzen von
ColumnPropertyoderRelationship.
-
methode
sqlalchemy.orm.PropComparator.regexp_match(pattern: Any, flags: str | None = None) → ColumnOperators¶ geerbt von der
ColumnOperators.regexp_match()-Methode vonColumnOperatorsImplementiert einen datenbankspezifischen „regexp match“-Operator.
Z. B.
stmt = select(table.c.some_column).where( table.c.some_column.regexp_match("^(b|c)") )
ColumnOperators.regexp_match()versucht, auf eine REGEXP-ähnliche Funktion oder einen Operator aufzulösen, der vom Backend bereitgestellt wird. **Die spezifische reguläre Ausdruckssyntax und die verfügbaren Flags sind jedoch nicht Backend-agnostisch.**Beispiele hierfür sind:
PostgreSQL - rendert
x ~ yoderx !~ ybei Negation.Oracle Database - rendert
REGEXP_LIKE(x, y)SQLite - verwendet den Platzhalteroperator
REGEXPvon SQLite und ruft die Python-Builtin-Funktionre.match()auf.andere Backends können spezielle Implementierungen bereitstellen.
Backends ohne spezielle Implementierung geben den Operator als „REGEXP“ oder „NOT REGEXP“ aus. Dies ist beispielsweise mit SQLite und MySQL kompatibel.
Reguläre Ausdrucksunterstützung ist derzeit für Oracle Database, PostgreSQL, MySQL und MariaDB implementiert. Teilweise Unterstützung ist für SQLite verfügbar. Die Unterstützung bei Drittanbieter-Dialekten kann variieren.
- Parameter:
pattern¶ – Die reguläre Ausdrucksmusterzeichenkette oder Spaltenklausel.
flags¶ – Jegliche regulären Ausdrucks-Flags, die angewendet werden sollen, nur als einfacher Python-String übergeben. Diese Flags sind Backend-spezifisch. Einige Backends, wie PostgreSQL und MariaDB, können die Flags alternativ als Teil des Musters angeben. Bei Verwendung des „ignore case“-Flags „i“ in PostgreSQL wird der Operator für den Groß-/Kleinschreibung ignorierenden regulären Ausdrucksabgleich
~*oder!~*verwendet.
Neu in Version 1.4.
Geändert in Version 1.4.48,: 2.0.18 Aufgrund eines Implementierungsfehlers akzeptierte der Parameter „flags“ zuvor SQL-Ausdrucksobjekte wie Spaltenausdrücke zusätzlich zu einfachen Python-Strings. Diese Implementierung funktionierte nicht korrekt mit Caching und wurde entfernt; es sollten nur Strings für den Parameter „flags“ übergeben werden, da diese Flags als wörtliche Inline-Werte innerhalb von SQL-Ausdrücken gerendert werden.
Siehe auch
-
method
sqlalchemy.orm.PropComparator.regexp_replace(pattern: Any, replacement: Any, flags: str | None = None) → ColumnOperators¶ geerbt von der
ColumnOperators.regexp_replace()Methode vonColumnOperatorsImplementiert einen datenbankspezifischen „regexp replace“-Operator.
Z. B.
stmt = select( table.c.some_column.regexp_replace("b(..)", "XY", flags="g") )
ColumnOperators.regexp_replace()versucht, eine REGEXP_REPLACE-ähnliche Funktion des Backends zu lösen, die normalerweise die FunktionREGEXP_REPLACE()ausgibt. Die spezifische Syntax regulärer Ausdrücke und die verfügbaren Flags sind jedoch **nicht Backend-agnostisch**.Unterstützung für reguläre Ersetzungen ist derzeit für Oracle Database, PostgreSQL, MySQL 8 oder höher und MariaDB implementiert. Die Unterstützung bei Drittanbieter-Dialekten kann variieren.
- Parameter:
pattern¶ – Der String des regulären Ausdrucksmusters oder die Spaltenklausel.
pattern¶ – Der Ersetzungsstring oder die Spaltenklausel.
flags¶ – Jegliche regulären Ausdrucks-Flags, die angewendet werden sollen, nur als einfacher Python-String übergeben. Diese Flags sind Backend-spezifisch. Einige Backends, wie PostgreSQL und MariaDB, können die Flags alternativ als Teil des Musters angeben.
Neu in Version 1.4.
Geändert in Version 1.4.48,: 2.0.18 Aufgrund eines Implementierungsfehlers akzeptierte der Parameter „flags“ zuvor SQL-Ausdrucksobjekte wie Spaltenausdrücke zusätzlich zu einfachen Python-Strings. Diese Implementierung funktionierte nicht korrekt mit Caching und wurde entfernt; es sollten nur Strings für den Parameter „flags“ übergeben werden, da diese Flags als wörtliche Inline-Werte innerhalb von SQL-Ausdrücken gerendert werden.
Siehe auch
-
method
sqlalchemy.orm.PropComparator.reverse_operate(op: OperatorType, other: Any, **kwargs: Any) → Operators¶ geerbt von der
Operators.reverse_operate()Methode vonOperatorsUmgekehrte Operation auf ein Argument.
Die Verwendung ist die gleiche wie bei
operate().
-
method
sqlalchemy.orm.PropComparator.startswith(other: Any, escape: str | None = None, autoescape: bool = False) → ColumnOperators¶ geerbt von der
ColumnOperators.startswith()Methode vonColumnOperatorsImplementiert den Operator
startswith.Erzeugt einen LIKE-Ausdruck, der gegen eine Übereinstimmung mit dem Anfang eines String-Wertes testet.
column LIKE <other> || '%'
Z. B.
stmt = select(sometable).where(sometable.c.column.startswith("foobar"))
Da der Operator
LIKEverwendet, verhalten sich Wildcard-Zeichen"%"und"_", die im Ausdruck <other> vorkommen, ebenfalls als Wildcards. Für literale Zeichenkettenwerte kann das FlagColumnOperators.startswith.autoescapeaufTruegesetzt werden, um diese Zeichen im Zeichenkettenwert zu maskieren, damit sie als sie selbst und nicht als Wildcard-Zeichen übereinstimmen. Alternativ legt der ParameterColumnOperators.startswith.escapeein gegebenes Zeichen als Escape-Zeichen fest, was nützlich sein kann, wenn der Zielausdruck keine literale Zeichenkette ist.- Parameter:
other¶ – Ausdruck, der verglichen werden soll. Dies ist normalerweise ein einfacher Zeichenkettenwert, kann aber auch ein beliebiger SQL-Ausdruck sein. LIKE-Wildcard-Zeichen
%und_werden standardmäßig nicht maskiert, es sei denn, das FlagColumnOperators.startswith.autoescapeist auf True gesetzt.autoescape¶ –
Boolean; wenn True, wird ein Escape-Zeichen innerhalb des LIKE-Ausdrucks etabliert und dann auf alle Vorkommen von
"%","_"und des Escape-Zeichens selbst im Vergleichswert angewendet, der als literaler String und nicht als SQL-Ausdruck angenommen wird.Ein Ausdruck wie
somecolumn.startswith("foo%bar", autoescape=True)
Wird gerendert als
somecolumn LIKE :param || '%' ESCAPE '/'
Mit dem Wert von
:paramals"foo/%bar".escape¶ –
ein Zeichen, das bei Angabe mit dem Schlüsselwort
ESCAPEgerendert wird, um dieses Zeichen als Escape-Zeichen zu etablieren. Dieses Zeichen kann dann vor Vorkommen von%und_gestellt werden, damit sie als sie selbst und nicht als Wildcard-Zeichen wirken.Ein Ausdruck wie
somecolumn.startswith("foo/%bar", escape="^")
Wird gerendert als
somecolumn LIKE :param || '%' ESCAPE '^'
Der Parameter kann auch mit
ColumnOperators.startswith.autoescapekombiniert werden.somecolumn.startswith("foo%bar^bat", escape="^", autoescape=True)
Wo oben der angegebene literale Parameter zu
"foo^%bar^^bat"konvertiert wird, bevor er an die Datenbank übergeben wird.
-
attribute
sqlalchemy.orm.PropComparator.timetuple: Literal[None] = None¶ geerbt von der
ColumnOperators.timetupleAttribut vonColumnOperatorsHack, erlaubt den Vergleich von Datetime-Objekten auf der linken Seite.
-
method
- class sqlalchemy.orm.Relationship¶
Beschreibt eine Objekt-Eigenschaft, die ein einzelnes Element oder eine Liste von Elementen enthält, die einer zugehörigen Datenbanktabelle entsprechen.
Der öffentliche Konstruktor ist die Funktion
relationship().Siehe auch
Geändert in Version 2.0:
Relationshipwurde als deklarationskompatible Unterklasse fürRelationshipPropertyhinzugefügt.Klassensignatur
class
sqlalchemy.orm.Relationship(sqlalchemy.orm.RelationshipProperty,sqlalchemy.orm.base._DeclarativeMapped)
- class sqlalchemy.orm.RelationshipDirection¶
Aufzählung, die die „Richtung“ einer
RelationshipPropertyangibt.RelationshipDirectionist vom AttributRelationship.directionvonRelationshipPropertyaus zugänglich.Mitglieder
Klassensignatur
class
sqlalchemy.orm.RelationshipDirection(enum.Enum)-
attribute
sqlalchemy.orm.RelationshipDirection.MANYTOMANY = 3¶ Gibt die Many-to-Many-Richtung für eine
relationship()an.Dieses Symbol wird typischerweise von der internen Logik verwendet, kann aber in bestimmten API-Funktionen exponiert sein.
-
attribute
sqlalchemy.orm.RelationshipDirection.MANYTOONE = 2¶ Gibt die Many-to-One-Richtung für eine
relationship()an.Dieses Symbol wird typischerweise von der internen Logik verwendet, kann aber in bestimmten API-Funktionen exponiert sein.
-
attribute
sqlalchemy.orm.RelationshipDirection.ONETOMANY = 1¶ Gibt die One-to-Many-Richtung für eine
relationship()an.Dieses Symbol wird typischerweise von der internen Logik verwendet, kann aber in bestimmten API-Funktionen exponiert sein.
-
attribute
- class sqlalchemy.orm.RelationshipProperty¶
Beschreibt eine Objekt-Eigenschaft, die ein einzelnes Element oder eine Liste von Elementen enthält, die einer zugehörigen Datenbanktabelle entsprechen.
Der öffentliche Konstruktor ist die Funktion
relationship().Siehe auch
Mitglieder
__eq__(), __init__(), __ne__(), adapt_to_entity(), and_(), any(), contains(), entity, has(), in_(), mapper, of_type(), cascade, cascade_iterator(), declarative_scan(), do_init(), entity, instrument_class(), mapper, merge()
Klassensignatur
class
sqlalchemy.orm.RelationshipProperty(sqlalchemy.orm._IntrospectsAnnotations,sqlalchemy.orm.StrategizedProperty,sqlalchemy.log.Identified)- class Comparator¶
Erzeugt boolesche, Vergleichs- und andere Operatoren für
RelationshipPropertyAttribute.Siehe die Dokumentation für
PropComparatorfür eine kurze Übersicht über die Operator-Definition auf ORM-Ebene.Klassensignatur
class
sqlalchemy.orm.RelationshipProperty.Comparator(sqlalchemy.util.langhelpers.MemoizedSlots,sqlalchemy.orm.PropComparator)-
method
sqlalchemy.orm.RelationshipProperty.Comparator.__eq__(other: Any) → ColumnElement[bool]¶ Implementiert den
==Operator.In einem Many-to-One-Kontext, wie z. B.
MyClass.some_prop == <some object>
wird typischerweise eine Klausel wie diese erzeugt:
mytable.related_id == <some id>
wobei
<some id>der Primärschlüssel des gegebenen Objekts ist.Der Operator
==bietet teilweise Funktionalität für Nicht-Many-to-One-Vergleiche.Vergleiche mit Sammlungen werden nicht unterstützt. Verwenden Sie
Comparator.contains().Verglichen mit einer skalaren One-to-Many-Beziehung wird eine Klausel erzeugt, die die Zielspalten in der übergeordneten Entität mit dem gegebenen Ziel vergleicht.
Verglichen mit einer skalaren Many-to-Many-Beziehung wird auch ein Alias der Assoziationstabelle gerendert, der einen natürlichen Join bildet, der Teil des Hauptteils der Abfrage ist. Dies funktioniert nicht für Abfragen, die über einfache AND-Konjunktionen von Vergleichen hinausgehen, wie z. B. solche, die OR verwenden. Verwenden Sie explizite Joins, Outer Joins oder
Comparator.has()für umfassendere skalare Mitgliedschaftstests, die keine Many-to-One-Beziehungen sind.Vergleiche mit
Nonein einem One-to-Many- oder Many-to-Many-Kontext erzeugen eine NOT EXISTS-Klausel.
-
method
sqlalchemy.orm.RelationshipProperty.Comparator.__init__(prop: RelationshipProperty[_PT], parentmapper: _InternalEntityType[Any], adapt_to_entity: AliasedInsp[Any] | None = None, of_type: _EntityType[_PT] | None = None, extra_criteria: Tuple[ColumnElement[bool], ...] = ())¶ Die Konstruktion von
Comparatorist intern für die Attributmechanismen des ORM.
-
method
sqlalchemy.orm.RelationshipProperty.Comparator.__ne__(other: Any) → ColumnElement[bool]¶ Implementiert den Operator
!=.In einem Many-to-One-Kontext, wie z. B.
MyClass.some_prop != <some object>
Dies erzeugt typischerweise eine Klausel wie diese:
mytable.related_id != <some id>
wobei
<some id>der Primärschlüssel des gegebenen Objekts ist.Der Operator
!=bietet teilweise Funktionalität für Nicht-Many-to-One-Vergleiche.Vergleiche mit Sammlungen werden nicht unterstützt. Verwenden Sie
Comparator.contains()in Verbindung mitnot_().Verglichen mit einer skalaren One-to-Many-Beziehung wird eine Klausel erzeugt, die die Zielspalten in der übergeordneten Entität mit dem gegebenen Ziel vergleicht.
Verglichen mit einer skalaren Many-to-Many-Beziehung wird auch ein Alias der Assoziationstabelle gerendert, der einen natürlichen Join bildet, der Teil des Hauptteils der Abfrage ist. Dies funktioniert nicht für Abfragen, die über einfache AND-Konjunktionen von Vergleichen hinausgehen, wie z. B. solche, die OR verwenden. Verwenden Sie explizite Joins, Outer Joins oder
Comparator.has()in Verbindung mitnot_()für umfassendere skalare Mitgliedschaftstests, die keine Many-to-One-Beziehungen sind.Vergleiche mit
Nonein einem One-to-Many- oder Many-to-Many-Kontext erzeugen eine EXISTS-Klausel.
-
method
sqlalchemy.orm.RelationshipProperty.Comparator.adapt_to_entity(adapt_to_entity: AliasedInsp[Any]) → RelationshipProperty.Comparator[Any]¶ Gibt eine Kopie dieses PropComparators zurück, die die angegebene
AliasedInspverwendet, um entsprechende Ausdrücke zu erzeugen.
-
method
sqlalchemy.orm.RelationshipProperty.Comparator.and_(*criteria: _ColumnExpressionArgument[bool]) → PropComparator[Any]¶ Fügt AND-Kriterien hinzu.
Siehe
PropComparator.and_()für ein Beispiel.Neu in Version 1.4.
-
method
sqlalchemy.orm.RelationshipProperty.Comparator.any(criterion: _ColumnExpressionArgument[bool] | None = None, **kwargs: Any) → ColumnElement[bool]¶ Erzeugt einen Ausdruck, der eine Sammlung anhand eines bestimmten Kriteriums unter Verwendung von EXISTS prüft.
Ein Ausdruck wie
session.query(MyClass).filter( MyClass.somereference.any(SomeRelated.x == 2) )
ergibt eine Abfrage wie
SELECT * FROM my_table WHERE EXISTS (SELECT 1 FROM related WHERE related.my_id=my_table.id AND related.x=2)
Da
Comparator.any()eine korrelierte Unterabfrage verwendet, ist seine Leistung im Vergleich zur Verwendung eines Joins nicht annähernd so gut, wenn gegen große Zieltabellen geprüft wird.Comparator.any()ist besonders nützlich für das Testen auf leere Sammlungensession.query(MyClass).filter(~MyClass.somereference.any())
wird erzeugen
SELECT * FROM my_table WHERE NOT (EXISTS (SELECT 1 FROM related WHERE related.my_id=my_table.id))
Comparator.any()ist nur für Sammlungen gültig, d.h. für einrelationship(), dasuselist=Truehat. Für skalare Referenzen verwenden SieComparator.has().
-
Methode
sqlalchemy.orm.RelationshipProperty.Comparator.contains(other: _ColumnExpressionArgument[Any], **kwargs: Any) → ColumnElement[bool]¶ Gibt einen einfachen Ausdruck zurück, der eine Sammlung auf die Anwesenheit eines bestimmten Elements prüft.
Comparator.contains()ist nur für Sammlungen gültig, d.h. für einrelationship(), das Eins-zu-Viele oder Viele-zu-Viele mituselist=Trueimplementiert.Bei Verwendung in einem einfachen Eins-zu-Viele-Kontext, ein Ausdruck wie
MyClass.contains(other)
Erzeugt eine Klausel wie
mytable.id == <some id>
Wobei
<some id>der Wert des Fremdschlüsselattributs aufotherist, das auf den Primärschlüssel seines Elternobjekts verweist. Daraus folgt, dassComparator.contains()bei der Verwendung mit einfachen Eins-zu-Viele-Operationen sehr nützlich ist.Bei Viele-zu-Viele-Operationen hat das Verhalten von
Comparator.contains()mehr Vorbehalte. Die Assoziationstabelle wird in der Anweisung gerendert, was einen "impliziten" Join erzeugt, d.h. mehrere Tabellen in der FROM-Klausel einschließt, die in der WHERE-Klausel gleichgesetzt werdenquery(MyClass).filter(MyClass.contains(other))
Erzeugt eine Abfrage wie
SELECT * FROM my_table, my_association_table AS my_association_table_1 WHERE my_table.id = my_association_table_1.parent_id AND my_association_table_1.child_id = <some id>
Wobei
<some id>der Primärschlüssel vonotherwäre. Aus dem Vorstehenden ist klar ersichtlich, dassComparator.contains()**nicht** mit Viele-zu-Viele-Sammlungen funktioniert, wenn es in Abfragen verwendet wird, die über einfache UND-Verknüpfungen hinausgehen, wie z.B. mehrereComparator.contains()-Ausdrücke, die durch ODER verbunden sind. In solchen Fällen müssen stattdessen Unterabfragen oder explizite "Outer Joins" verwendet werden. SieheComparator.any()für eine weniger performante Alternative mit EXISTS, oder beziehen Sie sich aufQuery.outerjoin()sowie Joins für weitere Details zur Konstruktion von Outer Joins.kwargs können von diesem Operator ignoriert werden, sind aber für die API-Konformität erforderlich.
-
Attribut
sqlalchemy.orm.RelationshipProperty.Comparator.entity: _InternalEntityType[_PT]¶ Die Zielentität, auf die sich dieser
Comparatorbezieht.Dies ist entweder ein
Mapper- oder einAliasedInsp-Objekt.Dies ist die "Ziel-" oder "Remote"-Seite des
relationship().
-
Methode
sqlalchemy.orm.RelationshipProperty.Comparator.has(criterion: _ColumnExpressionArgument[bool] | None = None, **kwargs: Any) → ColumnElement[bool]¶ Erzeugt einen Ausdruck, der eine skalare Referenz gegen ein bestimmtes Kriterium prüft, unter Verwendung von EXISTS.
Ein Ausdruck wie
session.query(MyClass).filter( MyClass.somereference.has(SomeRelated.x == 2) )
ergibt eine Abfrage wie
SELECT * FROM my_table WHERE EXISTS (SELECT 1 FROM related WHERE related.id==my_table.related_id AND related.x=2)
Da
Comparator.has()eine korrelierte Unterabfrage verwendet, ist seine Leistung im Vergleich zur Verwendung eines Joins nicht annähernd so gut, wenn gegen große Zieltabellen geprüft wird.Comparator.has()ist nur für skalare Referenzen gültig, d.h. für einrelationship(), dasuselist=Falsehat. Für Sammlungsreferenzen verwenden SieComparator.any().
-
Methode
sqlalchemy.orm.RelationshipProperty.Comparator.in_(other: Any) → NoReturn¶ Erzeugt eine IN-Klausel – dies wird derzeit nicht für
relationship()-basierte Attribute implementiert.
-
Attribut
sqlalchemy.orm.RelationshipProperty.Comparator.mapper: Mapper[_PT]¶ Der Ziel-
Mapper, auf den sich dieserComparatorbezieht.Dies ist die "Ziel-" oder "Remote"-Seite des
relationship().
-
Methode
sqlalchemy.orm.RelationshipProperty.Comparator.of_type(class_: _EntityType[Any]) → PropComparator[_PT]¶ Definiert dieses Objekt in Bezug auf eine polymorphe Unterklasse neu.
Siehe
PropComparator.of_type()für ein Beispiel.
-
method
-
Attribut
sqlalchemy.orm.RelationshipProperty.cascade¶ Gibt die aktuelle Cascade-Einstellung für diese
RelationshipPropertyzurück.
-
Methode
sqlalchemy.orm.RelationshipProperty.cascade_iterator(type_: str, state: InstanceState[Any], dict_: _InstanceDict, visited_states: Set[InstanceState[Any]], halt_on: Callable[[InstanceState[Any]], bool] | None = None) → Iterator[Tuple[Any, Mapper[Any], InstanceState[Any], _InstanceDict]]¶ Iteriert durch Instanzen, die mit der gegebenen Instanz für einen bestimmten „Cascade“ verknüpft sind, beginnend mit dieser MapperProperty.
Gibt einen Iterator von Tupeln (Instanz, Mapper, Zustand) zurück.
Beachten Sie, dass zuerst die „cascade“-Sammlung auf dieser MapperProperty für den gegebenen Typ überprüft wird, bevor cascade_iterator aufgerufen wird.
Diese Methode gilt typischerweise nur für Relationship.
-
Methode
sqlalchemy.orm.RelationshipProperty.declarative_scan(decl_scan: _ClassScanMapperConfig, registry: _RegistryType, cls: Type[Any], originating_module: str | None, key: str, mapped_container: Type[Mapped[Any]] | None, annotation: _AnnotationScanType | None, extracted_mapped_annotation: _AnnotationScanType | None, is_dataclass_field: bool) → None¶ Führt eine klassenspezifische Initialisierung zum frühen Zeitpunkt des deklarativen Scannens durch.
Neu in Version 2.0.
-
Methode
sqlalchemy.orm.RelationshipProperty.do_init() → None¶ Führt subklassenspezifische Initialisierungsschritte nach der Mapper-Erstellung durch.
Dies ist eine Vorlagenmethode, die von der init()-Methode des
MapperProperty-Objekts aufgerufen wird.
-
Attribut
sqlalchemy.orm.RelationshipProperty.entity¶ Gibt die zugeordnete Zielentität zurück, die eine Inspektion der Klasse oder der aliased Klasse ist, auf die sich diese
RelationshipPropertybezieht.
-
Methode
sqlalchemy.orm.RelationshipProperty.instrument_class(mapper: Mapper[Any]) → None¶ Hook, der vom Mapper aufgerufen wird, um die Instrumentierung des Klassenattributs, das von dieser MapperProperty verwaltet wird, zu initiieren.
Die MapperProperty ruft hier typischerweise das attributes-Modul auf, um ein InstrumentedAttribute einzurichten.
Dieser Schritt ist der erste von zwei Schritten zur Einrichtung eines InstrumentedAttribute und wird früh im Mapper-Einrichtungsprozess aufgerufen.
Der zweite Schritt ist typischerweise der Schritt init_class_attribute, der von StrategizedProperty über den post_instrument_class()-Hook aufgerufen wird. Dieser Schritt weist dem InstrumentedAttribute (insbesondere der "impl") zusätzlichen Zustand zu, der ermittelt wurde, nachdem die MapperProperty bestimmt hat, welche Art von Persistenzverwaltung sie durchführen muss (z. B. Skalar, Objekt, Sammlung usw.).
-
Attribut
sqlalchemy.orm.RelationshipProperty.mapper¶ Gibt den Ziel-
Mapperfür dieseRelationshipPropertyzurück.
-
Methode
sqlalchemy.orm.RelationshipProperty.merge(session: Session, source_state: InstanceState[Any], source_dict: _InstanceDict, dest_state: InstanceState[Any], dest_dict: _InstanceDict, load: bool, _recursive: Dict[Any, object], _resolve_conflict_map: Dict[_IdentityKeyType[Any], object]) → None¶ Führt das von dieser MapperProperty dargestellte Attribut von der Quelle zum Zielobjekt zusammen.
- Klasse sqlalchemy.orm.SQLORMExpression¶
Ein Typ, der verwendet werden kann, um jedes ORM-Attribut oder -Objekt anzugeben, das an seiner Stelle fungiert, im Kontext der SQL-Ausdruckserstellung.
SQLORMExpressionerweitert die Core-KlasseSQLColumnExpressionum zusätzliche ORM-spezifische SQL-Methoden wiePropComparator.of_type()und ist Teil der Basen fürInstrumentedAttribute. Sie kann in der PEP 484-Typisierung verwendet werden, um Argumente oder Rückgabewerte zu kennzeichnen, die sich wie ORM-Level-Attributausdrücke verhalten sollen.Neu ab Version 2.0.0b4.
Klassensignatur
class
sqlalchemy.orm.SQLORMExpression(sqlalchemy.orm.base.SQLORMOperations,sqlalchemy.sql.expression.SQLColumnExpression,sqlalchemy.util.langhelpers.TypingOnly)
- Klasse sqlalchemy.orm.Synonym¶
Deklarationsfront-End für die Klasse
SynonymProperty.Der öffentliche Konstruktor ist die Funktion
synonym().Geändert in Version 2.0:
Synonymals Declarative-kompatible Unterklasse fürSynonymPropertyhinzugefügtSiehe auch
Synonyme - Übersicht über Synonyme
Klassensignatur
class
sqlalchemy.orm.Synonym(sqlalchemy.orm.descriptor_props.SynonymProperty,sqlalchemy.orm.base._DeclarativeMapped)
- Klasse sqlalchemy.orm.SynonymProperty¶
Bezeichnet einen Attributnamen als Synonym für eine zugeordnete Eigenschaft, sodass das Attribut den Wert und das Ausdrucksverhalten eines anderen Attributs widerspiegelt.
Synonymwird mit der Funktionsynonym()konstruiert.Siehe auch
Synonyme - Übersicht über Synonyme
Mitglieder
doc, info, key, parent, set_parent(), uses_objects
Klassensignatur
class
sqlalchemy.orm.SynonymProperty(sqlalchemy.orm.descriptor_props.DescriptorProperty)-
Attribut
sqlalchemy.orm.SynonymProperty.doc: str | None¶ geerbt vom
DescriptorProperty.docAttribut vonDescriptorPropertyoptionale Dokumentationszeichenkette
-
Attribut
sqlalchemy.orm.SynonymProperty.info: _InfoType¶ geerbt vom
MapperProperty.infoAttribut vonMapperPropertyInfo-Dictionary, das mit dem Objekt verbunden ist und es dem Benutzer ermöglicht, benutzerdefinierte Daten mit diesem
InspectionAttrzu verknüpfen.Das Dictionary wird beim ersten Zugriff generiert. Alternativ kann es als Konstruktorargument an die Funktionen
column_property(),relationship()odercomposite()übergeben werden.
-
Attribut
sqlalchemy.orm.SynonymProperty.key: str¶ geerbt vom
MapperProperty.keyAttribut vonMapperPropertyName des Klassenattributs
-
Attribut
sqlalchemy.orm.SynonymProperty.parent: Mapper[Any]¶ geerbt vom
MapperProperty.parentAttribut vonMapperPropertyder
Mapper, der diese Eigenschaft verwaltet.
-
Methode
sqlalchemy.orm.SynonymProperty.set_parent(parent: Mapper[Any], init: bool) → None¶ Setzt den übergeordneten Mapper, der auf diese MapperProperty verweist.
Diese Methode wird von einigen Unterklassen überschrieben, um zusätzliche Einrichtungen durchzuführen, wenn der Mapper zum ersten Mal bekannt ist.
-
Attribut
sqlalchemy.orm.SynonymProperty.uses_objects¶
-
Attribut
- Klasse sqlalchemy.orm.QueryContext¶
- Klasse default_load_options¶
Klassensignatur
class
sqlalchemy.orm.QueryContext.default_load_options(sqlalchemy.sql.expression.Options)
- Klasse sqlalchemy.orm.QueryableAttribute¶
Basisklasse für Deskriptor-Objekte, die Attributereignisse im Namen eines
MapperProperty-Objekts abfangen. Die tatsächlicheMapperPropertyist über das AttributQueryableAttribute.propertyzugänglich.Mitglieder
adapt_to_entity(), and_(), expression, info, is_attribute, of_type(), operate(), parent, reverse_operate()
Klassensignatur
class
sqlalchemy.orm.QueryableAttribute(sqlalchemy.orm.base._DeclarativeMapped,sqlalchemy.orm.base.SQLORMExpression,sqlalchemy.orm.base.InspectionAttr,sqlalchemy.orm.PropComparator,sqlalchemy.sql.roles.JoinTargetRole,sqlalchemy.sql.roles.OnClauseRole,sqlalchemy.sql.expression.Immutable,sqlalchemy.sql.cache_key.SlotsMemoizedHasCacheKey,sqlalchemy.util.langhelpers.MemoizedSlots,sqlalchemy.event.registry.EventTarget)-
methode
sqlalchemy.orm.QueryableAttribute.adapt_to_entity(adapt_to_entity: AliasedInsp[Any]) → Self¶ Gibt eine Kopie dieses PropComparators zurück, die die angegebene
AliasedInspverwendet, um entsprechende Ausdrücke zu erzeugen.
-
methode
sqlalchemy.orm.QueryableAttribute.and_(*clauses: _ColumnExpressionArgument[bool]) → QueryableAttribute[bool]¶ Fügt zusätzliche Kriterien zur ON-Klausel hinzu, die durch dieses Beziehungsattribut repräsentiert wird.
Z. B.
stmt = select(User).join( User.addresses.and_(Address.email_address != "foo") ) stmt = select(User).options( joinedload(User.addresses.and_(Address.email_address != "foo")) )
Neu in Version 1.4.
-
attribut
sqlalchemy.orm.QueryableAttribute.expression: ColumnElement[_T_co]¶ Das SQL-Ausdrucksobjekt, das von diesem
QueryableAttributedargestellt wird.Dies ist normalerweise eine Instanz einer Unterklasse von
ColumnElement, die einen Spaltenausdruck darstellt.
-
attribut
sqlalchemy.orm.QueryableAttribute.info¶ Gibt das 'info'-Wörterbuch für das zugrunde liegende SQL-Element zurück.
Das Verhalten ist wie folgt:
Wenn das Attribut eine spalten-zugeordnete Eigenschaft ist, d.h.
ColumnProperty, die direkt einem schemaweitenColumn-Objekt zugeordnet ist, gibt dieses Attribut dasSchemaItem.info-Wörterbuch zurück, das dem Kern-LevelColumn-Objekt zugeordnet ist.Wenn das Attribut eine
ColumnPropertyist, aber einer anderen Art von SQL-Ausdruck als einerColumnzugeordnet ist, bezieht sich das Attribut auf dasMapperProperty.info-Wörterbuch, das direkt derColumnPropertyzugeordnet ist, vorausgesetzt, dass der SQL-Ausdruck selbst kein eigenes `.info`-Attribut hat (was der Fall sein sollte, es sei denn, ein benutzerdefinierter SQL-Konstrukt hat eines definiert).Wenn sich das Attribut auf eine andere Art von
MapperPropertybezieht, einschließlichRelationship, bezieht sich das Attribut auf dasMapperProperty.info-Wörterbuch, das dieserMapperPropertyzugeordnet ist.Um bedingungslos auf das
MapperProperty.info-Wörterbuch zuzugreifen, auch für eineColumnProperty, die direkt einerColumnzugeordnet ist, kann auf das Attribut über das AttributQueryableAttribute.propertyzugegriffen werden, z.B.MyClass.someattribute.property.info.
-
attribut
sqlalchemy.orm.QueryableAttribute.is_attribute = True¶ True, wenn dieses Objekt ein Python Deskriptor ist.
Dies kann sich auf verschiedene Typen beziehen. Normalerweise ein
QueryableAttribute, das Attributereignisse im Auftrag einerMapperPropertybehandelt. Kann aber auch ein Erweiterungstyp wieAssociationProxyoderhybrid_propertysein. DieInspectionAttr.extension_typeverweist auf eine Konstante, die den spezifischen Untertyp identifiziert.Siehe auch
-
methode
sqlalchemy.orm.QueryableAttribute.of_type(entity: _EntityType[_T]) → QueryableAttribute[_T]¶ Definieren Sie dieses Objekt neu in Form eines polymorphen Unterklassenkonstrukts, eines
with_polymorphic()-Konstrukts oder einesaliased()-Konstrukts.Gibt einen neuen PropComparator zurück, von dem aus weitere Kriterien ausgewertet werden können.
z. B.
query.join(Company.employees.of_type(Engineer)).filter( Engineer.name == "foo" )
- Parameter:
class_¶ – eine Klasse oder ein Mapper, der angibt, dass die Kriterien gegen diese spezifische Unterklasse gelten.
-
methode
sqlalchemy.orm.QueryableAttribute.operate(op: OperatorType, *other: Any, **kwargs: Any) → ColumnElement[Any]¶ Operiert auf einem Argument.
Dies ist die niedrigste Ebene der Operation, löst standardmäßig
NotImplementedErroraus.Das Überschreiben dieser Methode in einer Unterklasse kann dazu dienen, ein gemeinsames Verhalten auf alle Operationen anzuwenden. Zum Beispiel kann das Überschreiben von
ColumnOperatorsdazu dienen,func.lower()auf die linke und rechte Seite anzuwenden.class MyComparator(ColumnOperators): def operate(self, op, other, **kwargs): return op(func.lower(self), func.lower(other), **kwargs)
-
attribut
sqlalchemy.orm.QueryableAttribute.parent: _InternalEntityType[Any]¶ Gibt eine Inspektion-Instanz zurück, die das übergeordnete Element darstellt.
Dies ist entweder eine Instanz von
MapperoderAliasedInsp, abhängig von der Art der übergeordneten Entität, der dieses Attribut zugeordnet ist.
-
methode
sqlalchemy.orm.QueryableAttribute.reverse_operate(op: OperatorType, other: Any, **kwargs: Any) → ColumnElement[Any]¶ Umgekehrte Operation auf ein Argument.
Die Verwendung ist die gleiche wie bei
operate().
-
methode
- klasse sqlalchemy.orm.UOWTransaction¶
-
methode
sqlalchemy.orm.UOWTransaction.filter_states_for_dep(dep, states)¶ Filtert die angegebene Liste von Instanzzuständen nach denen, die für den gegebenen DependencyProcessor relevant sind.
-
methode
sqlalchemy.orm.UOWTransaction.finalize_flush_changes() → None¶ Markiert verarbeitete Objekte nach einem erfolgreichen Flush() als sauber/gelöscht.
Diese Methode wird innerhalb der Flush()-Methode aufgerufen, nachdem die Execute()-Methode erfolgreich war und die Transaktion committet wurde.
-
methode
sqlalchemy.orm.UOWTransaction.get_attribute_history(state, key, passive=symbol('PASSIVE_NO_INITIALIZE'))¶ Fassade zu attributes.get_state_history(), einschließlich Caching der Ergebnisse.
-
methode
sqlalchemy.orm.UOWTransaction.is_deleted(state)¶ Gibt
Truezurück, wenn der gegebene Zustand in dieser UOW-Transaktion als gelöscht markiert ist.
-
methode
sqlalchemy.orm.UOWTransaction.remove_state_actions(state)¶ Entfernt ausstehende Aktionen für einen Zustand aus der UOW-Transaktion.
Mitglieder
filter_states_for_dep(), finalize_flush_changes(), get_attribute_history(), is_deleted(), remove_state_actions(), was_already_deleted()
-
methode
sqlalchemy.orm.UOWTransaction.was_already_deleted(state)¶ Gibt
Truezurück, wenn der gegebene Zustand abgelaufen ist und bereits zuvor gelöscht wurde.
-
methode
Die Designs von flambé! dem Drachen und Der Alchemist wurden von Rotem Yaari erstellt und großzügig gespendet.
Erstellt mit Sphinx 7.2.6. Dokumentation zuletzt generiert: Di 11 Mär 2025 14:40:17 EDT