SQLAlchemy - dialetti

SQLAlchemy utilizza il sistema di dialetti per comunicare con vari tipi di database. Ogni database ha un wrapper DBAPI corrispondente. Tutti i dialetti richiedono che sia installato un driver DBAPI appropriato.

I seguenti dialetti sono inclusi nell'API SQLAlchemy:

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

Un oggetto Engine basato su un URL viene prodotto dalla funzione create_engine (). Questi URL possono includere nome utente, password, nome host e nome del database. Potrebbero esserci argomenti di parole chiave opzionali per una configurazione aggiuntiva. In alcuni casi, viene accettato un percorso di file e in altri un "nome origine dati" sostituisce le parti "host" e "database". La forma tipica di un URL di database è la seguente:

dialect+driver://username:[email protected]:port/database

PostgreSQL

Il dialetto PostgreSQL utilizza psycopg2come DBAPI predefinito. pg8000 è anche disponibile come sostituto puro di Python come mostrato di seguito:

# default
engine = create_engine('postgresql://scott:[email protected]/mydatabase')

# psycopg2
engine = create_engine('postgresql+psycopg2://scott:[email protected]/mydatabase')

# pg8000
engine = create_engine('postgresql+pg8000://scott:[email protected]/mydatabase')

MySQL

Il dialetto MySQL utilizza mysql-pythoncome DBAPI predefinito. Sono disponibili molti DBAPI MySQL, come MySQL-connector-python come segue:

# default
engine = create_engine('mysql://scott:[email protected]/foo')

# mysql-python
engine = create_engine('mysql+mysqldb://scott:[email protected]/foo')

# MySQL-connector-python
engine = create_engine('mysql+mysqlconnector://scott:[email protected]/foo')

Oracolo

Il dialetto Oracle utilizza cx_oracle come DBAPI predefinito come segue:

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

Microsoft SQL Server

Il dialetto di SQL Server utilizza pyodbccome DBAPI predefinito. pymssql è anche disponibile.

# pyodbc
engine = create_engine('mssql+pyodbc://scott:[email protected]')

# pymssql
engine = create_engine('mssql+pymssql://scott:[email protected]:port/dbname')

SQLite

SQLite si connette a database basati su file, utilizzando il modulo integrato Python sqlite3per impostazione predefinita. Poiché SQLite si connette ai file locali, il formato dell'URL è leggermente diverso. La parte "file" dell'URL è il nome del file del database. Per un percorso file relativo, questo richiede tre barre come mostrato di seguito:

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

E per un percorso di file assoluto, le tre barre sono seguite dal percorso assoluto come indicato di seguito:

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

Per utilizzare un database SQLite: memory:, specificare un URL vuoto come indicato di seguito -

engine = create_engine('sqlite://')

Conclusione

Nella prima parte di questo tutorial, abbiamo appreso come utilizzare Expression Language per eseguire istruzioni SQL. Il linguaggio di espressione incorpora costrutti SQL nel codice Python. Nella seconda parte, abbiamo discusso la capacità di mappatura delle relazioni tra oggetti di SQLAlchemy. L'API ORM mappa le tabelle SQL con le classi Python.