SQLAlchemy 2.0 Dokumentation
SQLAlchemy Core
- API für SQL-Anweisungen und Ausdrücke
- Spaltenelemente und Ausdrücke
- Operatorenreferenz
- SELECT und verwandte Konstrukte
- Einfügen, Aktualisieren, Löschen
- SQL- und generische Funktionen
- Benutzerdefinierte SQL-Konstrukte und Kompilierungserweiterung
- Expression Serializer Extension
- SQL Expression Language Grundlegende Konstrukte¶
- Besucher- und Traversal-Dienstprogramme
- Schema Definition Language
- SQL Datentyp-Objekte
- Engine und Connection verwenden
- Grundlagen der Core API
Projektversionen
- Vorherige: Expression Serializer Erweiterung
- Nächste: Visitor- und Traversal-Hilfsprogramme
- Nach oben: Startseite
- Auf dieser Seite
SQL Expression Language Grundlegende Konstrukte¶
Basisklassen und Mixins, die zur Komposition von SQL Expression Language-Elementen verwendet werden.
| Objektname | Beschreibung |
|---|---|
Der Schlüssel, der verwendet wird, um ein SQL-Anweisungskonstrukt im SQL-Kompilierungs-Cache zu identifizieren. |
|
Basisklasse für Elemente eines programmatisch erstellten SQL-Ausdrucks. |
|
Stellt die Fähigkeit einer Klasse her, dialektspezifische Argumente mit Standardwerten und Konstruktorvalidierung zu haben. |
|
Mixin für Objekte, die einen Cache-Schlüssel erzeugen können. |
|
Ein SQL-Konstrukt, bei dem der Zustand als nicht aufgerufenes Lambda gespeichert wird. |
|
Stellt eine komponierbare SQL-Anweisung als |
- class sqlalchemy.sql.expression.CacheKey¶
Der Schlüssel, der verwendet wird, um ein SQL-Anweisungskonstrukt im SQL-Kompilierungs-Cache zu identifizieren.
Siehe auch
Mitglieder
Klassensignatur
class
sqlalchemy.sql.expression.CacheKey(builtins.tuple)-
attribute
sqlalchemy.sql.expression.CacheKey.bindparams: Sequence[BindParameter[Any]]¶ Alias für Feldnummer 1
-
attribute
sqlalchemy.sql.expression.CacheKey.key: Tuple[Any, ...]¶ Alias für Feldnummer 0
-
method
sqlalchemy.sql.expression.CacheKey.to_offline_string(statement_cache: MutableMapping[Any, str], statement: ClauseElement, parameters: _CoreSingleExecuteParams) → str¶ Generiert eine „Offline-String“-Form dieses
CacheKeyDer „Offline-String“ ist im Grunde der SQL-String für die Anweisung plus eine Darstellung der gebundenen Parameterwerte in Serie. Während das
CacheKey-Objekt für die Verwendung als Cache-Schlüssel von In-Memory-Identitäten abhängt, ist die „Offline“-Version für einen Cache geeignet, der auch für andere Prozesse funktioniert.Der angegebene
statement_cacheist ein wörterbuchähnliches Objekt, in dem die String-Form der Anweisung selbst zwischengespeichert wird. Dieses Wörterbuch sollte in einem längerfristigen Geltungsbereich liegen, um die Zeit für die Stringifizierung von Anweisungen zu reduzieren.
-
attribute
- class sqlalchemy.sql.expression.ClauseElement¶
Basisklasse für Elemente eines programmatisch erstellten SQL-Ausdrucks.
Mitglieder
compare(), compile(), get_children(), inherit_cache, params(), self_group(), unique_params()
Klassensignatur
class
sqlalchemy.sql.expression.ClauseElement(sqlalchemy.sql.annotation.SupportsWrappingAnnotations,sqlalchemy.sql.cache_key.MemoizedHasCacheKey,sqlalchemy.sql.traversals.HasCopyInternals,sqlalchemy.sql.visitors.ExternallyTraversible,sqlalchemy.sql.expression.CompilerElement)-
method
sqlalchemy.sql.expression.ClauseElement.compare(other: ClauseElement, **kw: Any) → bool¶ Vergleicht dieses
ClauseElementmit dem gegebenenClauseElement.Unterklassen sollten das Standardverhalten überschreiben, das ein direkter Identitätsvergleich ist.
**kw sind Argumente, die von den `compare()`-Methoden von Unterklassen verwendet werden und zur Modifizierung der Vergleichskriterien verwendet werden können (siehe
ColumnElement).
-
method
sqlalchemy.sql.expression.ClauseElement.compile(bind: _HasDialect | None = None, dialect: Dialect | None = None, **kw: Any) → Compiled¶ geerbt von der
CompilerElement.compile()Methode vonCompilerElementKompiliert diesen SQL-Ausdruck.
Der Rückgabewert ist ein
CompiledObjekt. Das Aufrufen vonstr()oderunicode()auf dem zurückgegebenen Wert ergibt eine String-Repräsentation des Ergebnisses. DasCompiledObjekt kann auch ein Dictionary von Bindungsparameternamen und -werten über denparams-Accessor zurückgeben.- Parameter:
bind¶ – Eine
ConnectionoderEngine, die eineDialectbereitstellen kann, um einCompiled-Objekt zu generieren. Wenn die Parameterbindunddialectbeide weggelassen werden, wird ein Standard-SQL-Compiler verwendet.column_keys¶ – Verwendet für INSERT- und UPDATE-Anweisungen, eine Liste von Spaltennamen, die in der VALUES-Klausel der kompilierten Anweisung enthalten sein sollten. Wenn
None, werden alle Spalten aus dem Zieltabellenobjekt gerendert.dialect¶ – Eine
Dialect-Instanz, die einCompiled-Objekt generieren kann. Dieses Argument hat Vorrang vor dem Argumentbind.compile_kwargs¶ –
optionales Dictionary mit zusätzlichen Parametern, die an den Compiler in allen "visit"-Methoden weitergegeben werden. Dies ermöglicht es beispielsweise, benutzerdefinierte Flags an benutzerdefinierte Kompilierungskonstrukte zu übergeben. Es wird auch für den Fall verwendet, dass das Flag
literal_bindsweitergegeben wird.from sqlalchemy.sql import table, column, select t = table("t", column("x")) s = select(t).where(t.c.x == 5) print(s.compile(compile_kwargs={"literal_binds": True}))
-
method
sqlalchemy.sql.expression.ClauseElement.get_children(*, omit_attrs: Tuple[str, ...] = (), **kw: Any) → Iterable[HasTraverseInternals]¶ geerbt von der
HasTraverseInternals.get_children()Methode vonHasTraverseInternalsGibt direkte Kind-Elemente
HasTraverseInternalsdiesesHasTraverseInternalszurück.Dies wird für die Besuchs-Traversal verwendet.
**kw kann Flags enthalten, die die zurückgegebene Sammlung ändern, z. B. um eine Teilmenge von Elementen zurückzugeben, um größere Traversierungen zu reduzieren, oder um Kind-Elemente aus einem anderen Kontext zurückzugeben (z. B. Schema-Ebene Sammlungen anstelle von Klausel-Ebene).
-
attribute
sqlalchemy.sql.expression.ClauseElement.inherit_cache: bool | None = None¶ geerbt vom
HasCacheKey.inherit_cacheAttribut vonHasCacheKeyGibt an, ob diese
HasCacheKey-Instanz das Cache-Schlüssel-Generierungsschema ihrer direkten Oberklasse verwenden soll.Das Attribut hat standardmäßig den Wert
None, was bedeutet, dass ein Konstrukt noch nicht berücksichtigt hat, ob es für die Teilnahme an der Caching-Mechanik geeignet ist. Dies ist funktional äquivalent zum Setzen des Wertes aufFalse, außer dass auch eine Warnung ausgegeben wird.Dieses Flag kann auf
Truefür eine bestimmte Klasse gesetzt werden, wenn die SQL, die diesem Objekt entspricht, nicht auf Basis von Attributen geändert wird, die lokal zu dieser Klasse und nicht zu ihrer Oberklasse gehören.Siehe auch
Unterstützung für benutzerdefinierte Konstrukte für Caching aktivieren - Allgemeine Richtlinien für das Setzen des Attributs
HasCacheKey.inherit_cachefür Drittanbieter- oder benutzerdefinierte SQL-Konstrukte.
-
method
sqlalchemy.sql.expression.ClauseElement.params(_ClauseElement__optionaldict: Mapping[str, Any] | None = None, **kwargs: Any) → Self¶ Gibt eine Kopie zurück, bei der
bindparam()Elemente ersetzt wurden.Gibt eine Kopie dieses ClauseElement zurück, bei der
bindparam()Elemente durch Werte aus dem angegebenen Wörterbuch ersetzt wurden.>>> clause = column("x") + bindparam("foo") >>> print(clause.compile().params) {'foo':None} >>> print(clause.params({"foo": 7}).compile().params) {'foo':7}
-
method
sqlalchemy.sql.expression.ClauseElement.self_group(against: OperatorType | None = None) → ClauseElement¶ Wendet eine „Gruppierung“ auf dieses
ClauseElementan.Diese Methode wird von Unterklassen überschrieben, um ein „Gruppierungs“-Konstrukt zurückzugeben, d. h. Klammern. Insbesondere wird sie von „binären“ Ausdrücken verwendet, um sich selbst zu gruppieren, wenn sie in einen größeren Ausdruck eingefügt werden, sowie von
select()-Konstrukten, wenn sie in die FROM-Klausel eines anderenselect()eingefügt werden. (Beachten Sie, dass Unterabfragen normalerweise mit der MethodeSelect.alias()erstellt werden sollten, da viele Plattformen benannte verschachtelte SELECT-Anweisungen erfordern).Wenn Ausdrücke miteinander komponiert werden, ist die Anwendung von
self_group()automatisch – Endbenutzercode muss diese Methode nie direkt verwenden. Beachten Sie, dass SQLAlchemys Klauselkonstrukte die Operatorrangfolge berücksichtigen – Klammern sind möglicherweise nicht erforderlich, z. B. in einem Ausdruck wiex OR (y AND z)– AND hat Vorrang vor OR.Die Basis-Methode
self_group()vonClauseElementgibt einfach self zurück.
-
method
sqlalchemy.sql.expression.ClauseElement.unique_params(_ClauseElement__optionaldict: Dict[str, Any] | None = None, **kwargs: Any) → Self¶ Gibt eine Kopie zurück, bei der
bindparam()Elemente ersetzt wurden.Gleiche Funktionalität wie
ClauseElement.params(), fügt aber unique=True zu betroffenen Bindparametern hinzu, damit mehrere Anweisungen verwendet werden können.
-
method
- class sqlalchemy.sql.base.DialectKWArgs¶
Stellt die Fähigkeit einer Klasse her, dialektspezifische Argumente mit Standardwerten und Konstruktorvalidierung zu haben.
Die
DialectKWArgsinteragiert mit denDefaultDialect.construct_arguments, die in einer Dialekt vorhanden sind.Mitglieder
Siehe auch
-
classmethod
sqlalchemy.sql.base.DialectKWArgs.argument_for(dialect_name, argument_name, default)¶ Fügt eine neue Art von dialektspezifischem Schlüsselwortargument für diese Klasse hinzu.
Z. B.
Index.argument_for("mydialect", "length", None) some_index = Index("a", "b", mydialect_length=5)
Die Methode
DialectKWArgs.argument_for()ist eine per-Argument-Methode, um zusätzliche Argumente zum WörterbuchDefaultDialect.construct_argumentshinzuzufügen. Dieses Wörterbuch enthält eine Liste von Argumentnamen, die von verschiedenen schema-level Konstrukten im Namen einer Dialekt akzeptiert werden.Neue Dialekte sollten dieses Wörterbuch typischerweise auf einmal als Datenmember der Dialektklasse angeben. Der Anwendungsfall für die ad-hoc-Addition von Argumentnamen ist typischerweise für Endbenutzercode, der auch ein benutzerdefiniertes Kompilierungsschema verwendet, das die zusätzlichen Argumente konsumiert.
- Parameter:
dialect_name¶ – Name einer Dialekt. Die Dialekt muss lokalisierbar sein, sonst wird eine
NoSuchModuleErrorausgelöst. Die Dialekt muss außerdem eine vorhandene SammlungDefaultDialect.construct_argumentsenthalten, die angibt, dass sie am System für Schlüsselwortargument-Validierung und Standardwerte teilnimmt, andernfalls wird einArgumentErrorausgelöst. Wenn die Dialekt diese Sammlung nicht enthält, können bereits beliebige Schlüsselwortargumente im Namen dieser Dialekt angegeben werden. Alle in SQLAlchemy enthaltenen Dialekte enthalten diese Sammlung, bei Dialekten von Drittanbietern kann die Unterstützung variieren.argument_name¶ – Name des Parameters.
default¶ – Standardwert des Parameters.
-
attribute
sqlalchemy.sql.base.DialectKWArgs.dialect_kwargs¶ Eine Sammlung von Schlüsselwortargumenten, die als Dialekt-spezifische Optionen für dieses Konstrukt angegeben wurden.
Die Argumente sind hier in ihrem ursprünglichen Format
<dialect>_<kwarg>vorhanden. Nur tatsächlich übergebene Argumente sind enthalten; im Gegensatz zur SammlungDialectKWArgs.dialect_options, die alle von dieser Dialekt bekannten Optionen einschließlich Standardwerten enthält.Die Sammlung ist auch beschreibbar; Schlüssel werden im Format
<dialect>_<kwarg>akzeptiert, wobei der Wert in die Liste der Optionen aufgenommen wird.Siehe auch
DialectKWArgs.dialect_options- verschachteltes Wörterbuchformat
-
attribute
sqlalchemy.sql.base.DialectKWArgs.dialect_options¶ Eine Sammlung von Schlüsselwortargumenten, die als Dialekt-spezifische Optionen für dieses Konstrukt angegeben wurden.
Dies ist eine zweistufig verschachtelte Registry, die auf
<dialect_name>und<argument_name>geschlüsselt ist. Zum Beispiel ist das Argumentpostgresql_whereauffindbar unterarg = my_object.dialect_options["postgresql"]["where"]
Neu in Version 0.9.2.
Siehe auch
DialectKWArgs.dialect_kwargs- flaches Wörterbuchformat
-
attribute
sqlalchemy.sql.base.DialectKWArgs.kwargs¶ Ein Synonym für
DialectKWArgs.dialect_kwargs.
-
classmethod
- class sqlalchemy.sql.traversals.HasCacheKey¶
Mixin für Objekte, die einen Cache-Schlüssel erzeugen können.
Diese Klasse befindet sich normalerweise in einer Hierarchie, die mit der Basisklasse
HasTraverseInternalsbeginnt, aber dies ist optional. Derzeit sollte die Klasse eigenständig funktionieren, ohneHasTraverseInternalseinzubinden.Mitglieder
-
attribute
sqlalchemy.sql.traversals.HasCacheKey.inherit_cache: bool | None = None¶ Gibt an, ob diese
HasCacheKey-Instanz das Cache-Schlüssel-Generierungsschema ihrer direkten Oberklasse verwenden soll.Das Attribut hat standardmäßig den Wert
None, was bedeutet, dass ein Konstrukt noch nicht berücksichtigt hat, ob es für die Teilnahme an der Caching-Mechanik geeignet ist. Dies ist funktional äquivalent zum Setzen des Wertes aufFalse, außer dass auch eine Warnung ausgegeben wird.Dieses Flag kann auf
Truefür eine bestimmte Klasse gesetzt werden, wenn die SQL, die diesem Objekt entspricht, nicht auf Basis von Attributen geändert wird, die lokal zu dieser Klasse und nicht zu ihrer Oberklasse gehören.Siehe auch
Unterstützung für benutzerdefinierte Konstrukte für Caching aktivieren - Allgemeine Richtlinien für das Setzen des Attributs
HasCacheKey.inherit_cachefür Drittanbieter- oder benutzerdefinierte SQL-Konstrukte.
-
attribute
- class sqlalchemy.sql.expression.LambdaElement¶
Ein SQL-Konstrukt, bei dem der Zustand als nicht aufgerufenes Lambda gespeichert wird.
Der
LambdaElementwird transparent erzeugt, wenn Lambda-Ausdrücke in SQL-Konstrukte übergeben werden, wie zum Beispielstmt = select(table).where(lambda: table.c.col == parameter)
Der
LambdaElementist die Basis fürStatementLambdaElement, das eine vollständige Anweisung innerhalb eines Lambdas darstellt.Neu in Version 1.4.
Klassensignatur
class
sqlalchemy.sql.expression.LambdaElement(sqlalchemy.sql.expression.ClauseElement)
- class sqlalchemy.sql.expression.StatementLambdaElement¶
Stellt eine komponierbare SQL-Anweisung als
LambdaElementdar.Das
StatementLambdaElementwird mit der Funktionlambda_stmt()konstruiertfrom sqlalchemy import lambda_stmt stmt = lambda_stmt(lambda: select(table))
Nach der Konstruktion können zusätzliche Kriterien durch Hinzufügen weiterer Lambdas zur Anweisung aufgebaut werden, die das vorhandene Anweisungsobjekt als einzelnen Parameter akzeptieren.
stmt += lambda s: s.where(table.c.col == parameter)
Neu in Version 1.4.
Klassensignatur
Klasse
sqlalchemy.sql.expression.StatementLambdaElement(sqlalchemy.sql.roles.AllowsLambdaRole,sqlalchemy.sql.lambdas.LambdaElement,sqlalchemy.sql.expression.Executable)-
Methode
sqlalchemy.sql.expression.StatementLambdaElement.add_criteria(other: Callable[[Any], Any], enable_tracking: bool = True, track_on: Any | None = None, track_closure_variables: bool = True, track_bound_values: bool = True) → StatementLambdaElement¶ Fügt diesem
StatementLambdaElementneue Kriterien hinzu.Z. B.
>>> def my_stmt(parameter): ... stmt = lambda_stmt( ... lambda: select(table.c.x, table.c.y), ... ) ... stmt = stmt.add_criteria(lambda: table.c.x > parameter) ... return stmt
Die Methode
StatementLambdaElement.add_criteria()ist äquivalent zur Verwendung des Python-Additionsoperators, um ein neues Lambda hinzuzufügen, mit der Ausnahme, dass zusätzliche Argumente hinzugefügt werden können, einschließlichtrack_closure_valuesundtrack_on.>>> def my_stmt(self, foo): ... stmt = lambda_stmt( ... lambda: select(func.max(foo.x, foo.y)), ... track_closure_variables=False, ... ) ... stmt = stmt.add_criteria(lambda: self.where_criteria, track_on=[self]) ... return stmt
Siehe
lambda_stmt()für eine Beschreibung der akzeptierten Parameter.
-
Attribut
sqlalchemy.sql.expression.StatementLambdaElement.is_delete¶
-
Attribut
sqlalchemy.sql.expression.StatementLambdaElement.is_dml¶
-
Attribut
sqlalchemy.sql.expression.StatementLambdaElement.is_insert¶
-
Attribut
sqlalchemy.sql.expression.StatementLambdaElement.is_select¶
-
Attribut
sqlalchemy.sql.expression.StatementLambdaElement.is_text¶
-
Attribut
sqlalchemy.sql.expression.StatementLambdaElement.is_update¶
-
Methode
sqlalchemy.sql.expression.StatementLambdaElement.spoil() → NullLambdaStatement¶ Gibt ein neues
StatementLambdaElementzurück, das alle Lambdas bei jeder Ausführung bedingungslos ausführt.
-
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