Учебники

SQLAlchemy — Диалекты

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

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

  • жар-птица
  • Microsoft SQL Server
  • MySQL
  • оракул
  • 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 использует cx_oracle в качестве DBAPI по умолчанию следующим образом:

engine = create_engine('oracle://scott:tiger@127.0.0.1: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: database, укажите пустой URL, как показано ниже —

engine = create_engine('sqlite://')

Заключение

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