Home Recent changes

turbogears/base_de_donnee

Base de Donnée

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

Définition d'un model

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.

création des fixtures

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

configuration de la base de donnée

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

L'ORM

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()