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.