SQLAlchemy - Dialekte

SQLAlchemy verwendet ein Dialektsystem, um mit verschiedenen Arten von Datenbanken zu kommunizieren. Jede Datenbank verfügt über einen entsprechenden DBAPI-Wrapper. Für alle Dialekte muss ein entsprechender DBAPI-Treiber installiert sein.

Folgende Dialekte sind in der SQLAlchemy API enthalten:

  • Firebird
  • Microsoft SQL Server
  • MySQL
  • Oracle
  • PostgreSQL
  • SQL
  • Sybase

Ein auf einer URL basierendes Engine-Objekt wird von der Funktion create_engine () erstellt. Diese URLs können Benutzername, Kennwort, Hostname und Datenbanknamen enthalten. Möglicherweise gibt es optionale Schlüsselwortargumente für die zusätzliche Konfiguration. In einigen Fällen wird ein Dateipfad akzeptiert, in anderen Fällen ersetzt ein "Datenquellenname" die Teile "Host" und "Datenbank". Die typische Form einer Datenbank-URL lautet wie folgt:

dialect+driver://username:password@host:port/database

PostgreSQL

Der PostgreSQL-Dialekt verwendet psycopg2als Standard-DBAPI. pg8000 ist auch als reiner Python-Ersatz erhältlich, wie unten gezeigt:

# default
engine = create_engine('postgresql://scott:tiger@localhost/mydatabase')

# psycopg2
engine = create_engine('postgresql+psycopg2://scott:tiger@localhost/mydatabase')

# pg8000
engine = create_engine('postgresql+pg8000://scott:tiger@localhost/mydatabase')

MySQL

Der MySQL-Dialekt verwendet mysql-pythonals Standard-DBAPI. Es sind viele MySQL-DBAPIs verfügbar, z. B. MySQL-Connector-Python wie folgt:

# default
engine = create_engine('mysql://scott:tiger@localhost/foo')

# mysql-python
engine = create_engine('mysql+mysqldb://scott:tiger@localhost/foo')

# MySQL-connector-python
engine = create_engine('mysql+mysqlconnector://scott:tiger@localhost/foo')

Orakel

Der Oracle-Dialekt verwendet cx_oracle als Standard-DBAPI wie folgt -

engine = create_engine('oracle://scott:[email protected]:1521/sidname')
engine = create_engine('oracle+cx_oracle://scott:tiger@tnsname')

Microsoft SQL Server

Der SQL Server-Dialekt verwendet pyodbcals Standard-DBAPI. pymssql ist ebenfalls verfügbar.

# pyodbc
engine = create_engine('mssql+pyodbc://scott:tiger@mydsn')

# pymssql
engine = create_engine('mssql+pymssql://scott:tiger@hostname:port/dbname')

SQLite

SQLite stellt mithilfe des in Python integrierten Moduls eine Verbindung zu dateibasierten Datenbanken her sqlite3standardmäßig. Da SQLite eine Verbindung zu lokalen Dateien herstellt, unterscheidet sich das URL-Format geringfügig. Der "Datei" -Teil der URL ist der Dateiname der Datenbank. Für einen relativen Dateipfad sind drei Schrägstriche erforderlich (siehe unten).

engine = create_engine('sqlite:///foo.db')

Und für einen absoluten Dateipfad folgt auf die drei Schrägstriche der unten angegebene absolute Pfad -

engine = create_engine('sqlite:///C:\\path\\to\\foo.db')

Geben Sie eine leere URL wie unten angegeben an, um eine SQLite: memory: -Datenbank zu verwenden.

engine = create_engine('sqlite://')

Fazit

Im ersten Teil dieses Tutorials haben wir gelernt, wie man die Ausdruckssprache zum Ausführen von SQL-Anweisungen verwendet. Die Ausdruckssprache bettet SQL-Konstrukte in Python-Code ein. Im zweiten Teil haben wir die Fähigkeit zur Zuordnung von Objektbeziehungen von SQLAlchemy erörtert. Die ORM-API ordnet die SQL-Tabellen Python-Klassen zu.