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:password@host: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:tiger@localhost/mydatabase')
# psycopg2
engine = create_engine('postgresql+psycopg2://scott:tiger@localhost/mydatabase')
# pg8000
engine = create_engine('postgresql+pg8000://scott:tiger@localhost/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: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')
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:tiger@tnsname')
Microsoft SQL Server
Il dialetto di SQL Server utilizza pyodbccome DBAPI predefinito. pymssql è anche disponibile.
# pyodbc
engine = create_engine('mssql+pyodbc://scott:tiger@mydsn')
# pymssql
engine = create_engine('mssql+pymssql://scott:tiger@hostname: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.