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:[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: database, укажите пустой URL, как показано ниже —
engine = create_engine('sqlite://')
Заключение
В первой части этого руководства мы узнали, как использовать язык выражений для выполнения операторов SQL. Язык выражений встраивает конструкции SQL в код Python. Во второй части мы обсудили возможность сопоставления объектных отношений в SQLAlchemy. ORM API отображает таблицы SQL с помощью классов Python.