SQLAlchemy - Dialectos

SQLAlchemy utiliza un sistema de dialectos para comunicarse con varios tipos de bases de datos. Cada base de datos tiene un contenedor DBAPI correspondiente. Todos los dialectos requieren que esté instalado un controlador DBAPI apropiado.

Los siguientes dialectos están incluidos en la API de SQLAlchemy:

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

Un objeto Engine basado en una URL es producido por la función create_engine (). Estas URL pueden incluir nombre de usuario, contraseña, nombre de host y nombre de la base de datos. Puede haber argumentos de palabras clave opcionales para una configuración adicional. En algunos casos, se acepta una ruta de archivo y, en otros, un "nombre de fuente de datos" reemplaza las partes "host" y "base de datos". La forma típica de la URL de una base de datos es la siguiente:

dialect+driver://username:[email protected]:port/database

PostgreSQL

El dialecto de PostgreSQL usa psycopg2como DBAPI predeterminado. pg8000 también está disponible como un sustituto de Python puro, como se muestra a continuación:

# default
engine = create_engine('postgresql://scott:[email protected]/mydatabase')

# psycopg2
engine = create_engine('postgresql+psycopg2://scott:[email protected]/mydatabase')

# pg8000
engine = create_engine('postgresql+pg8000://scott:[email protected]/mydatabase')

MySQL

El dialecto MySQL usa mysql-pythoncomo DBAPI predeterminado. Hay muchas DBAPI de MySQL disponibles, como MySQL-connector-python de la siguiente manera:

# default
engine = create_engine('mysql://scott:[email protected]/foo')

# mysql-python
engine = create_engine('mysql+mysqldb://scott:[email protected]/foo')

# MySQL-connector-python
engine = create_engine('mysql+mysqlconnector://scott:[email protected]/foo')

Oráculo

El dialecto de Oracle usa cx_oracle como DBAPI predeterminado de la siguiente manera:

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

Microsoft SQL Server

El dialecto de SQL Server utiliza pyodbccomo DBAPI predeterminado. pymssql también está disponible.

# pyodbc
engine = create_engine('mssql+pyodbc://scott:[email protected]')

# pymssql
engine = create_engine('mssql+pymssql://scott:[email protected]:port/dbname')

SQLite

SQLite se conecta a bases de datos basadas en archivos mediante el módulo integrado de Python sqlite3por defecto. Como SQLite se conecta a archivos locales, el formato de la URL es ligeramente diferente. La parte de "archivo" de la URL es el nombre de archivo de la base de datos. Para una ruta de archivo relativa, esto requiere tres barras, como se muestra a continuación:

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

Y para una ruta de archivo absoluta, las tres barras son seguidas por la ruta absoluta como se indica a continuación:

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

Para usar una base de datos SQLite: memory:, especifique una URL vacía como se indica a continuación:

engine = create_engine('sqlite://')

Conclusión

En la primera parte de este tutorial, hemos aprendido cómo usar el lenguaje de expresión para ejecutar declaraciones SQL. El lenguaje de expresión incorpora construcciones SQL en código Python. En la segunda parte, hemos discutido la capacidad de mapeo de relaciones de objetos de SQLAlchemy. La API de ORM mapea las tablas SQL con clases de Python.