SQLAlchemy - Диалекты

SQLAlchemy использует систему диалектов для связи с различными типами баз данных. Каждая база данных имеет соответствующую оболочку DBAPI. Все диалекты требуют установки соответствующего драйвера DBAPI.

Следующие диалекты включены в SQLAlchemy API -

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

Объект Engine на основе URL создается функцией create_engine (). Эти URL-адреса могут включать имя пользователя, пароль, имя хоста и имя базы данных. Могут быть необязательные ключевые аргументы для дополнительной конфигурации. В некоторых случаях допустим путь к файлу, а в других «имя источника данных» заменяет части «хост» и «база данных». Типичная форма URL-адреса базы данных выглядит следующим образом:

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

PostgreSQL

Диалект PostgreSQL использует psycopg2как DBAPI по умолчанию. pg8000 также доступен в качестве замены на чистом Python, как показано ниже:

# 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

Диалект MySQL использует mysql-pythonкак DBAPI по умолчанию. Доступно множество MySQL DBAPI, например MySQL-connector-python, как показано ниже:

# 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')

Oracle

Диалект Oracle использует cx_oracle в качестве DBAPI по умолчанию:

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

Microsoft SQL Server

Диалект SQL Server использует pyodbcкак DBAPI по умолчанию. pymssql также доступен.

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

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

SQLite

SQLite подключается к файловым базам данных с помощью встроенного модуля Python. sqlite3по умолчанию. Поскольку SQLite подключается к локальным файлам, формат URL-адреса немного отличается. «Файловая» часть URL-адреса - это имя файла базы данных. Для относительного пути к файлу требуется три слэша, как показано ниже -

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

А для абсолютного пути к файлу за тремя косыми чертами следует абсолютный путь, как указано ниже -

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

Чтобы использовать базу данных SQLite: memory:, укажите пустой URL-адрес, как указано ниже -

engine = create_engine('sqlite://')

Заключение

В первой части этого руководства мы узнали, как использовать язык выражений для выполнения операторов SQL. Язык выражений встраивает конструкции SQL в код Python. Во второй части мы обсудили возможность отображения объектных отношений в SQLAlchemy. ORM API сопоставляет таблицы SQL с классами Python.