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¶
- Grundlegende Konstrukte der SQL-Ausdruckssprache
- Besucher- und Traversal-Dienstprogramme
- Schema Definition Language
- SQL Datentyp-Objekte
- Engine und Connection verwenden
- Grundlagen der Core API
Projektversionen
- Vorherige: Benutzerdefinierte SQL-Konstrukte und Kompilierungs-Erweiterung
- Nächste: Grundlegende Konstrukte der SQL Expression Language
- Nach oben: Startseite
- Auf dieser Seite
Expression Serializer Extension¶
Serializer/Deserializer-Objekte für die Verwendung mit SQLAlchemy-Abfragestrukturen, die eine „kontextbezogene“ Deserialisierung ermöglichen.
Legacy-Funktion
Die Serializer-Erweiterung ist veraltet und sollte nicht für neue Entwicklungen verwendet werden.
Jede SQLAlchemy-Abfragestruktur, entweder basierend auf sqlalchemy.sql.* oder sqlalchemy.orm.*, kann verwendet werden. Die Mapper, Tabellen, Spalten, Sitzungen usw., auf die sich die Struktur bezieht, werden nicht in serialisierter Form gespeichert, sondern stattdessen bei der Deserialisierung wieder mit der Abfragestruktur verknüpft.
Warnung
Die Serializer-Erweiterung verwendet Pickle zum Serialisieren und Deserialisieren von Objekten. Daher gelten die gleichen Sicherheitsüberlegungen wie in der Python-Dokumentation.
Die Verwendung ist fast identisch mit der des Standard-Python-Pickle-Moduls
from sqlalchemy.ext.serializer import loads, dumps
metadata = MetaData(bind=some_engine)
Session = scoped_session(sessionmaker())
# ... define mappers
query = (
Session.query(MyClass)
.filter(MyClass.somedata == "foo")
.order_by(MyClass.sortkey)
)
# pickle the query
serialized = dumps(query)
# unpickle. Pass in metadata + scoped_session
query2 = loads(serialized, metadata, Session)
print(query2.all())Ähnliche Einschränkungen wie bei der Verwendung von rohem Pickle gelten; gemappte Klassen müssen selbst pickelbar sein, d. h. sie müssen aus einem Modul-Namespace importierbar sein.
Das Serializer-Modul ist nur für Abfragestrukturen geeignet. Es wird nicht benötigt für
Instanzen von benutzerdefinierten Klassen. Diese enthalten im typischen Fall keine Verweise auf Engines, Sitzungen oder Expressions-Konstrukte und können direkt serialisiert werden.
Tabellenmetadaten, die vollständig aus der serialisierten Struktur geladen werden sollen (d. h. die nicht bereits in der Anwendung deklariert sind). Reguläre pickle.loads()/dumps() können verwendet werden, um beliebige
MetaData-Objekte vollständig zu serialisieren, typischerweise eines, das zuvor aus einer vorhandenen Datenbank reflektiert wurde. Das Serializer-Modul ist speziell für den umgekehrten Fall, in dem die Tabellenmetadaten bereits im Speicher vorhanden sind.
| Objektname | Beschreibung |
|---|---|
dumps(obj[, protocol]) |
|
loads(data[, metadata, scoped_session, engine]) |
|
- class sqlalchemy.ext.serializer.Deserializer¶
Mitglieder
Klassensignatur
class
sqlalchemy.ext.serializer.Deserializer(_pickle.Unpickler)-
method
sqlalchemy.ext.serializer.Deserializer.get_engine()¶
-
method
sqlalchemy.ext.serializer.Deserializer.persistent_load(id_)¶
-
method
- class sqlalchemy.ext.serializer.Serializer¶
Mitglieder
Klassensignatur
class
sqlalchemy.ext.serializer.Serializer(_pickle.Pickler)-
method
sqlalchemy.ext.serializer.Serializer.persistent_id(obj)¶
-
method
- function sqlalchemy.ext.serializer.dumps(obj, protocol=5)¶
- function sqlalchemy.ext.serializer.loads(data, metadata=None, scoped_session=None, engine=None)¶
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