Le moteur d'ORM de Turbogears est SQLalchemy. Le workflow est donc fonction de ce système.
Les modèles sont dans des fichiers séparés dans le dossier "model". Il sont importés dans le fichier <app>/model/__init__.py
Les imports de "base" sont :
from sqlalchemy import * from sqlalchemy.orm import mapper, relation from sqlalchemy import Table, ForeignKey, Column, etc.. from sqlalchemy.types import Integer, Text, etc... from <app>.model import DeclarativeBase, metadata, DBSession
Un model hérite de class DeclarativeBase Il définis un argument "__tablename" (le nom de la table en base de donnée) Il définis ensuite une liste d'argument dont le format est le suivant:
argument = Column(type, option=arg) # par exemple: id = Column(Integer, primary_key=True)
Un fichier model.template permet de démarrer la création d'un model avec les imports de base.
Il est possible de définir des fixtures dans le fichier <app>/websetup avec la fonction "bootstrap"
Le format d'une fixture est :
<obj> = model.<Model>(**kwargs) #arguments nommés correspondant aux champs de la table model.DBSession.add(<obj>)
On peut ensuite créer les tables avec:
gearbox setup-app
La configuration de la base de donnée se fait dans le(s) fichier(s) developpement.ini, test.ini, production.ini en fonction du context de l'application.
en l'occurence, en mode developpement, sans configuration particulière:
sqlalchemy.url = sqlite:///%(here)s/devdata.db
On utilise page DBSession pour faire des appels à la base de donnée. Les appels sont du type obj = DBSession.query(Model).filter_by(k=v).one()