Évolution #323
ORM
Description
Concevoir un module pour la création d'un ORM à partir d'une base de données.
History
#1
Updated by vincent.mbg about 13 years ago
- Status changed from Nouveau to Assigné
- Assignee set to vincent.mbg
- % Done changed from 0 to 30
Voici la philosophie de l'ORM :
Chaque fois qu'un objet est instancié, cela provoque son inscription dans la table correspondante
ex :
f1 = Fleure( 1, 'rose' ) --> insert into Fleure values( 1, 'rose' )
Chaque classe aura une méthode statique 'get' permettant de récupérer un ou plusieurs objets instanciés auparavant
ex :
f1 = Fleure.get( id = 1 ) --> select * from Fleure where id = 1
Chaque objet aura une méthode destroy(). Cette méthode provoque la suppression de l'instance dans la table associée, après l'appelle de la méthode destroy(), l'objet devien inutilisable.
ex :
f1.destroy() --> delete from Fleure where id = 1
f1.get_id() --> erreur, cet objet est détruit
Au niveau de l'accès des attributs :
Dans tous les cas, un accès aux attributs d'un objet provoque une mise à jour de la table correspondante
ex :
f1.couleur = 'rouge' --> update Fleure set couleur = rouge where id = 1
f2.set_couleur( 'rouge' ) --> update Fleure set couleur = rouge where id = 1
Il faudra proposer deux modes, un mode ou l'accès aux attributs est privé et un mode ou l'accès est public.
Développement :
Dans un premier temps un ORM dédié à la BDD suivante sera créé.
lorsqu'il sera pleinement fonctionnelle, il faudra crée le programme qui créera la source de L'ORM en fonction de la BDD.
#2
Updated by vincent.mbg about 13 years ago
- File ormdd.py added
Voici la BDD sur laquelle est construite l'ORM dédié.
- CREATE TABLE terrasse(
- id INTEGER PRIMARY KEY,
- orientation TEXT)
- CREATE TABLE fleure(
- id INTEGER PRIMARY KEY,
- couleur TEXT,
- id_terrasse INTEGER REFERENCES terrasse( id ))
La classe dédié à la table fleure est fini. Reste à faire la table terrasse ainsi que les contraintes d'intégrités référentielles.
#3
Updated by vincent.mbg about 13 years ago
- File ormdd.py added
- % Done changed from 30 to 50
Pour la méthode destroy, un argument cascade permet la destruction en cascade si l'argument est à True
#4
Updated by vincent.mbg about 13 years ago
- File deleted (
ormdd.py)
#5
Updated by vincent.mbg about 13 years ago
Conception revue + correction de bugs. + test
#6
Updated by vincent.mbg about 13 years ago
- File deleted (
ormdd.py)
#7
Updated by vincent.mbg about 13 years ago
- % Done changed from 50 to 70
#8
Updated by vincent.mbg about 13 years ago
- Status changed from Assigné to Résolu
- % Done changed from 70 to 100
#9
Updated by vincent.mbg about 13 years ago
- Project changed from MBG SQLite to Ohraimeur