Daten speichern und abrufen#

Um Daten persistent zu speichern, kann ein Prozess verwendet werden, der sich Serialisierung oder Marshalling nennt. In ihm werden Datenstrukturen in eine lineare Form umgewandelt und gespeichert. Der umgekehrte Vorgang wird dann Deserialisierung oder Unmarshalling genannt. Python bietet in der Standardbibliothek mehrere Module, mit denen ihr Objekte serialisieren und deserialisieren könnt:

das marshal-Modul

wird im Wesentlichen intern von Python genutzt und sollte nicht verwendet werden um Daten abwärtskompatibel zu speichern.

das pickle-Modul

könnt ihr verwenden, wenn ihr weder ein lesbares Format noch Interoperabilität benötigt.

das json-Modul

könnt ihr verwenden um Daten für verschiedene Sprachen in einer lesbaren Form auszutauschen.

das xml-Modul

könnt ihr ebenfalls verwenden um Daten in verschiedene Sprachen in einer lesbaren Form auszutauschen.

Die Python-Datenbank-API#

Die Python Database API definiert eine Standardschnittstelle für Python-Datenbankzugriffsmodule. Sie ist in PEP 249 definiert und wird häufig verwendet, z.B. von sqlite, psycopg, and mysql-python.

SQLAlchemy#

SQLAlchemy ist ein weit verbreitetes Datenbank-Toolkit. Es bietet nicht nur als ein ORM, sondern bietet auch eine allgemeine API zum Schreiben von datenbankagnostischem Code ohne SQL. Alembic basiert auf SQLAlchemy und dient als Datenbankmigrationswerkzeug.

NoSQL-Datenbanken#

Es gibt Daten, die sich nur schwer in ein relationales Datenmodell übertragen lassen. Dann solltet ihr zumindest einen Blick auf NoSQL-Datenbanken werfen.