SQLAlchemy - dialekty
SQLAlchemy wykorzystuje system dialektów do komunikacji z różnymi typami baz danych. Każda baza danych ma odpowiednią otokę DBAPI. Wszystkie dialekty wymagają zainstalowania odpowiedniego sterownika DBAPI.
Następujące dialekty są zawarte w SQLAlchemy API -
- Firebird
- Microsoft SQL Server
- MySQL
- Oracle
- PostgreSQL
- SQL
- Sybase
Obiekt Engine oparty na adresie URL jest tworzony przez funkcję create_engine (). Te adresy URL mogą zawierać nazwę użytkownika, hasło, nazwę hosta i nazwę bazy danych. Mogą istnieć opcjonalne argumenty słów kluczowych dla dodatkowej konfiguracji. W niektórych przypadkach akceptowana jest ścieżka do pliku, aw innych „nazwa źródła danych” zastępuje części „host” i „baza danych”. Typowa forma adresu URL bazy danych jest następująca -
dialect+driver://username:password@host:port/database
PostgreSQL
Dialekt PostgreSQL używa psycopg2jako domyślny DBAPI. pg8000 jest również dostępny jako substytut w czystym Pythonie, jak pokazano poniżej:
# 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
Dialekt MySQL używa mysql-pythonjako domyślny DBAPI. Dostępnych jest wiele interfejsów DBAPI MySQL, takich jak MySQL-connector-python w następujący sposób -
# 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')
Wyrocznia
Dialekt Oracle używa cx_oracle jako domyślny DBAPI w następujący sposób -
engine = create_engine('oracle://scott:[email protected]:1521/sidname')
engine = create_engine('oracle+cx_oracle://scott:tiger@tnsname')
Microsoft SQL Server
Dialekt SQL Server używa pyodbcjako domyślny DBAPI. pymssql jest również dostępny.
# pyodbc
engine = create_engine('mssql+pyodbc://scott:tiger@mydsn')
# pymssql
engine = create_engine('mssql+pymssql://scott:tiger@hostname:port/dbname')
SQLite
SQLite łączy się z bazami danych opartymi na plikach za pomocą wbudowanego modułu Pythona sqlite3domyślnie. Ponieważ SQLite łączy się z plikami lokalnymi, format adresu URL jest nieco inny. Część adresu URL „plik” to nazwa pliku bazy danych. W przypadku względnej ścieżki pliku wymaga to trzech ukośników, jak pokazano poniżej -
engine = create_engine('sqlite:///foo.db')
W przypadku bezwzględnej ścieżki do pliku po trzech ukośnikach następuje ścieżka bezwzględna, jak podano poniżej -
engine = create_engine('sqlite:///C:\\path\\to\\foo.db')
Aby użyć SQLite: memory: database, podaj pusty adres URL, jak podano poniżej -
engine = create_engine('sqlite://')
Wniosek
W pierwszej części tego samouczka nauczyliśmy się, jak używać języka wyrażeń do wykonywania instrukcji SQL. Język wyrażeń osadza konstrukcje SQL w kodzie Pythona. W drugiej części omówiliśmy możliwości mapowania relacji obiektów w SQLAlchemy. ORM API mapuje tabele SQL na klasy Pythona.