SQLAlchemy - Dialectes

SQLAlchemy utilise un système de dialectes pour communiquer avec différents types de bases de données. Chaque base de données a un wrapper DBAPI correspondant. Tous les dialectes nécessitent l'installation d'un pilote DBAPI approprié.

Les dialectes suivants sont inclus dans l'API SQLAlchemy -

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

Un objet Engine basé sur une URL est produit par la fonction create_engine (). Ces URL peuvent inclure le nom d'utilisateur, le mot de passe, le nom d'hôte et le nom de la base de données. Il peut y avoir des arguments de mots clés facultatifs pour une configuration supplémentaire. Dans certains cas, un chemin de fichier est accepté, et dans d'autres, un «nom de source de données» remplace les parties «hôte» et «base de données». La forme typique d'une URL de base de données est la suivante -

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

PostgreSQL

Le dialecte PostgreSQL utilise psycopg2comme DBAPI par défaut. pg8000 est également disponible en tant que substitut pur-Python comme indiqué ci-dessous:

# 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

Le dialecte MySQL utilise mysql-pythoncomme DBAPI par défaut. Il existe de nombreux DBAPI MySQL disponibles, tels que MySQL-connector-python comme suit -

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

Oracle

Le dialecte Oracle utilise cx_oracle comme DBAPI par défaut comme suit -

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

Microsoft SQL Server

Le dialecte SQL Server utilise pyodbccomme DBAPI par défaut. pymssql est également disponible.

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

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

SQLite

SQLite se connecte à des bases de données basées sur des fichiers, à l'aide du module intégré Python sqlite3par défaut. Lorsque SQLite se connecte aux fichiers locaux, le format de l'URL est légèrement différent. La partie «fichier» de l'URL est le nom de fichier de la base de données. Pour un chemin de fichier relatif, cela nécessite trois barres obliques comme indiqué ci-dessous -

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

Et pour un chemin de fichier absolu, les trois barres obliques sont suivies du chemin absolu comme indiqué ci-dessous -

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

Pour utiliser un SQLite: memory: database, spécifiez une URL vide comme indiqué ci-dessous -

engine = create_engine('sqlite://')

Conclusion

Dans la première partie de ce didacticiel, nous avons appris à utiliser le langage d'expression pour exécuter des instructions SQL. Le langage d'expression incorpore des constructions SQL dans du code Python. Dans la deuxième partie, nous avons discuté de la capacité de mappage de relation d'objet de SQLAlchemy. L'API ORM mappe les tables SQL avec des classes Python.