SQLAlchemy - Dialetos

SQLAlchemy usa sistema de dialetos para se comunicar com vários tipos de bancos de dados. Cada banco de dados possui um wrapper DBAPI correspondente. Todos os dialetos exigem que um driver DBAPI apropriado seja instalado.

Os seguintes dialetos estão incluídos na API SQLAlchemy -

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

Um objeto Engine baseado em uma URL é produzido pela função create_engine (). Esses URLs podem incluir nome de usuário, senha, nome do host e nome do banco de dados. Pode haver argumentos de palavra-chave opcionais para configuração adicional. Em alguns casos, um caminho de arquivo é aceito e, em outros, um “nome da fonte de dados” substitui as partes “host” e “banco de dados”. A forma típica de um URL de banco de dados é a seguinte -

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

PostgreSQL

O dialeto PostgreSQL usa psycopg2como o DBAPI padrão. pg8000 também está disponível como um substituto puro do Python, conforme mostrado abaixo:

# 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

O dialeto MySQL usa mysql-pythoncomo o DBAPI padrão. Existem muitos DBAPIs MySQL disponíveis, como MySQL-connector-python da seguinte maneira -

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

Oráculo

O dialeto Oracle usa cx_oracle como o DBAPI padrão da seguinte forma -

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

Microsoft SQL Server

O dialeto do SQL Server usa pyodbccomo o DBAPI padrão. pymssql também está disponível.

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

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

SQLite

SQLite se conecta a bancos de dados baseados em arquivo, usando o módulo integrado do Python sqlite3por padrão. Como o SQLite se conecta a arquivos locais, o formato da URL é ligeiramente diferente. A parte “arquivo” da URL é o nome do arquivo do banco de dados. Para um caminho de arquivo relativo, isso requer três barras, conforme mostrado abaixo -

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

E para um caminho de arquivo absoluto, as três barras são seguidas pelo caminho absoluto conforme fornecido abaixo -

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

Para usar um banco de dados SQLite: memory :, especifique uma URL vazia conforme fornecido abaixo -

engine = create_engine('sqlite://')

Conclusão

Na primeira parte deste tutorial, aprendemos como usar a linguagem Expression para executar instruções SQL. A linguagem de expressão incorpora construções SQL no código Python. Na segunda parte, discutimos a capacidade de mapeamento de relação de objeto do SQLAlchemy. A API ORM mapeia as tabelas SQL com classes Python.