Verbindung herstellen - die Engine

Willkommen ORM- und Core-Leser!

Jede SQLAlchemy-Anwendung, die eine Verbindung zu einer Datenbank herstellt, muss eine Engine verwenden. Dieser kurze Abschnitt ist für alle.

Der Anfang jeder SQLAlchemy-Anwendung ist ein Objekt namens Engine. Dieses Objekt fungiert als zentrale Quelle für Verbindungen zu einer bestimmten Datenbank und bietet sowohl eine Fabrik als auch einen Speicherplatz, der als Verbindungspool für diese Datenbankverbindungen bezeichnet wird. Die Engine ist typischerweise ein globales Objekt, das nur einmal für einen bestimmten Datenbankserver erstellt wird und mit einer URL-Zeichenfolge konfiguriert wird, die beschreibt, wie sie sich mit dem Datenbankhost oder Backend verbinden soll.

Für dieses Tutorial verwenden wir eine reine In-Memory-SQLite-Datenbank. Dies ist eine einfache Möglichkeit, Dinge zu testen, ohne eine tatsächlich vorhandene Datenbank einrichten zu müssen. Die Engine wird mit der Funktion create_engine() erstellt

>>> from sqlalchemy import create_engine
>>> engine = create_engine("sqlite+pysqlite:///:memory:", echo=True)

Das Hauptargument für create_engine ist eine URL-Zeichenfolge, die oben als Zeichenfolge "sqlite+pysqlite:///:memory:" übergeben wird. Diese Zeichenfolge teilt der Engine drei wichtige Fakten mit

  1. Mit welcher Art von Datenbank kommunizieren wir? Dies ist der obige Teil sqlite, der in SQLAlchemy mit einem Objekt namens Dialekt verknüpft ist.

  2. Welche DBAPI verwenden wir? Die Python DBAPI ist ein Drittanbieter-Treiber, den SQLAlchemy verwendet, um mit einer bestimmten Datenbank zu interagieren. In diesem Fall verwenden wir den Namen pysqlite, was im modernen Python-Gebrauch die sqlite3-Schnittstelle der Standardbibliothek für SQLite ist. Wenn dies weggelassen wird, verwendet SQLAlchemy eine Standard- DBAPI für die ausgewählte Datenbank.

  3. Wie lokalisieren wir die Datenbank? In diesem Fall enthält unsere URL die Phrase /:memory:, was dem Modul sqlite3 anzeigt, dass wir eine **rein im Speicher befindliche** Datenbank verwenden werden. Diese Art von Datenbank ist perfekt zum Experimentieren, da sie weder einen Server benötigt noch neue Dateien erstellen muss.

Wir haben auch einen Parameter create_engine.echo angegeben, der die Engine anweist, alle ausgegebenen SQL-Abfragen an einen Python-Logger zu senden, der in die Standardausgabe schreibt. Dieses Flag ist eine Abkürzung für die Einrichtung von Python-Logging formaler und nützlich für Experimente in Skripten. Viele SQL-Beispiele enthalten diese SQL-Logging-Ausgabe unter einem Link [SQL], der bei Anklicken die vollständige SQL-Interaktion anzeigt.