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.