TurboGears - SQLAlchemy

Bien qu'il soit possible d'utiliser SQL dans l'application TurboGears pour effectuer des opérations CRUD sur n'importe quelle base de données relationnelle, il est conseillé d'utiliser SQLAlchemy, une boîte à outils Python est un puissant mappeur de relation d'objet qui donne aux développeurs d'applications toute la puissance et la flexibilité de SQL. En plus de la prise en charge des bases de données SQL via SQLAlchemy, TurboGears prend également en charge la base de données MongoDB via Ming. Dans cette section, les fonctionnalités de SQLAlchemy sont présentées.

Qu'est-ce que ORM (Object Relational Mapping)?

La plupart des plates-formes de langage de programmation sont orientées objet. Les données des serveurs SGBDR sont quant à elles stockées sous forme de tables. Le mappage de relation d'objet est une technique de mappage des paramètres d'objet à la structure de table sous-jacente du SGBDR. Une API ORM fournit des méthodes pour effectuer des opérations CRUD sans avoir à écrire des instructions SQL brutes.

Lorsqu'un projet TurboGears est créé à l'aide de la commande 'quickstart' de la boîte à outils Gearbox, la prise en charge de SQLAlchemy est activée par défaut par les paramètres de configuration suivants -

config['use_sqlalchemy'] = True
config['sqlalchemy.url'] = 'sqlite:///devdata.db'

Le projet «quickstarted» crée également un package de modèles en son sein. Par exemple, un projet 'Hello' aura Hello \ hello \ model. Les fichiers suivants sont créés dans ce package -

  • __init__.py- C'est ici que l'accès à la base de données est configuré. Les objets de modèle de l'application sont importés dans ce module. Il a également une DBSession - un gestionnaire de session global et également une DeclarativeBase, qui est une classe de base pour toutes les classes de modèle.

  • auth.py- C'est ici que sont définis les modèles utilisés par la pile d'authentification. Des modèles de base de données supplémentaires sont stockés dans ce package, en tant que module séparé, et ajoutés dans le __init__.py.