- accueil CHATA - exemples - Documentation - Tranche
- Résumé
- PONX - PLUIE - MClaveau
|
CHATA (Champs & Tables) Micro SGBD purement Python, en mémoire
Stage 01 # -*- coding: cp1252 -*- import chata #déclaration d'une base dabase=chata.base()
#définition des champs article=chata.champ(index=True) libelle=chata.champ() prix=chata.champ() famille=chata.champ()
#définition d'une table tarticle=chata.table(article,libelle,prix,famille)
#finalise la structure chata.autoname(globals())
#remplissage d'une table tarticle.set(1,'cd',"CD-ROM à l'unité",0.56,'informatique') tarticle.set(2,'dvd',"DVD-ROM à l'unité",0.86,'informatique') tarticle.set(3,'pastis',"Bouteille de pastis",13.99,'boisson') tarticle.set(6,'chateauneuf',"Châteauneuf du pape",34,'boisson') tarticle.set(5,'eau',"eau",2.20,'boisson') tarticle.append('eauf',"Eau ferrugineuse",2.80,'boisson') num=tarticle.append('python','Super-langage informatique') famille.value='informatique' prix.value=0.00
#visualisation du contenu tarticle.visuall()
#enregistreùent de la base dabase.enregistre()
print print "modifie le contenu d'un article" tarticle.moveto(5) print print 'article',article.value,':',libelle.value libelle.value='Eau plate' print 'article',article.value,':',libelle.value print libelle.fromrecord(5) #une autre forme de visu
#sauve les modifications tarticle.commit()
print print "supprime l'enregistrement 5" tarticle.delete(5) tarticle.visuall()
print print "annule les modifs, depuis le dernier commit" tarticle.rollback() tarticle.visuall()
print print "visu de l'index article" tarticle.idxd[article].visu()
print print "différentes visus d'enregistrement" tarticle.visu() tarticle.visu(3) tarticle.moveto(2) tarticle.visu()
print print "recherche d'un enregistrement par l'index" print'recherche par un index' article.idx.searchexact('cd') tarticle.visu()
print print "accès direct au champ article de l'enregistrement 3 (pour info))" print tarticle.rec[3][article.position]
print print "mini stats" print 'max:',tarticle.cmax(2) print 'max:',tarticle.cmax(prix) print 'min:',tarticle.cmin(prix) print 'sum:',tarticle.csum(prix) print 'nb :',tarticle.cnb(prix)
Stage 02 # -*- coding: cp1252 -*- import chata #déclaration d'une base dabase=chata.base()
#définition des champs article=chata.champ(index=True) libelle=chata.champ() prix=chata.champ() famille=chata.champ()
#définition d'une table tarticle=chata.table(article,libelle,prix,famille)
#finalise la structure chata.autoname(globals()) #chargement des données précédentes dabase.charge()
#ajout de quelques enregistrements tarticle.append('javascript','langage objet par prototypage',0.00,'informatique') tarticle.append('rhum','Agricole, à déguster',26,'boisson') tarticle.append('vodka',"le grand frisson de l'est",22,'boisson') tarticle.append('graveur','graveur de cd/dvd',34,'informatique') tarticle.append('gin','Genevrier',19.50,'boisson') tarticle.append('cognac','Vieilli en fût de chêne',38,'boisson') tarticle.append('armagnac','le cousin du cognac',36,'boisson') tarticle.append('ante','antésite',2.2,'boisson')
print print "visualisation du contenu" tarticle.visuall()
print print "sélection famille=='boisson'" s1=tarticle.selectioninterval(famille, 'boisson','boisson') chata.selection.visu(s1, famille,article,libelle,prix) print print "sélection prix entre 10 et 99" s2=tarticle.selectioninterval(prix, 10,99) chata.selection.visu(s2, famille,article,libelle,prix)
print print "intersection des sélections (==> boisson entre 10 et 99)" s3=s1.intersection(s2) chata.selection.visu(s3, famille,article,libelle,prix)
print print "union des sélections (==> boisson et aussi articles avec prix entre 10 et 99)" s4=s1.union(s2) chata.selection.visu(s4, famille,article,libelle,prix)
print print "tri de sélection (boisson, triées par prix + libelle)" ls=chata.selection.sort(s1,prix,libelle) chata.listselect.visu(ls, article,prix,famille,libelle)
print print "sélection sur index (ultra-rapide" s5=tarticle.idxselectionintervalle(article, 'd','pz') chata.selection.visu(s5, article,libelle)
#sauvegarde, pour la suite... tarticle.commit()
Stage 03 # -*- coding: cp1252 -*- import chata #déclaration d'une base dabase=chata.base()
#définition des champs article=chata.champ(index=True) libelle=chata.champ() prix=chata.champ() famille=chata.champ()
#définition d'une table tarticle=chata.table(article,libelle,prix,famille)
#finalise la structure chata.autoname(globals()) #chargement des données précédentes dabase.charge()
#définition de 3 nouveaux champs et d'une autre table #noter la définition de la jointure pour le champ farticle # (une jointure utilise toujours un champ indexé) farticle=chata.champ(joint=article) facture=chata.champ() quantite=chata.champ() tlfact=chata.table(facture,farticle,quantite)
#finalise la structure chata.autoname(globals())
#on ajoute quelques lignes de facturation tlfact.set(1,2007001,'cd',100) tlfact.append(2007001,'dvd',100) tlfact.append(2007001,'rhum',1) tlfact.append(2007001,'cognac',1) tlfact.append(2007001,'pastis',5) tlfact.append(2007001,'eau',12)
print print "sélection de tout ce qui est facturé en quantité>1" s1=tlfact.selectioninterval(quantite, 1.1,999999) chata.selection.visu(s1,facture,farticle,libelle,quantite)
print print "sélection articles 'boisson'" s2=tarticle.selectioninterval(famille, 'boisson','boisson') chata.selection.visu(s2,article,famille,libelle) print print "sélection sur jointure (sélection précédente + facturé)" s3=tlfact.selectionjointure(farticle, s2) chata.selection.visu(s3,facture,farticle,famille,quantite) print print "intersection ('boisson' + facturé + quantité>1)" s4=s3.intersection(s1) chata.selection.visu(s4,facture,farticle,famille,libelle,quantite) print print "sélection(facturé avec qté 1) + récupération résultat dans une liste de liste" s5=tlfact.selectioninterval(quantite,1,1) lst=chata.selection.recuplist(s5, facture,farticle,libelle,quantite,prix) for l in lst: print l
print print "la même chose, triée sur code_article" lt=chata.selection.sort(s5,farticle) lst=chata.listselect.recuplist(lt, facture,farticle,libelle,quantite,prix) for l in lst: print l
Stage 04 # -*- coding: cp1252 -*- import chata #déclaration d'une base dabase=chata.base()
#définition des champs article=chata.champ(index=True) libelle=chata.champ() prix=chata.champ() famille=chata.champ()
#définition d'une table tarticle=chata.table(article,libelle,prix,famille)
#finalise la structure chata.autoname(globals())
#chargement des données précédentes dabase.charge()
# fonctions pour callback dans les déclencheurs (= triggers) def majqte(num, champ, dataold, datanew): #on additionne les quantités par facture if dataold: fqtetotale.value=fqtetotale.value-dataold if datanew: fqtetotale.value=fqtetotale.value+datanew
def majlignes(num, champ, dataold, datanew): #on compte les lignes par factures if dataold: fnblignes.value-=1 if datanew: fnblignes.value+=1 #définition de nouveaux champs et de la table facture-enTêtes tfacture=chata.champ(index=True) fqtetotale=chata.champ() fnblignes=chata.champ() ttfact=chata.table(tfacture,fqtetotale,fnblignes)
#définition de nouveaux champs et de la tables facture-lignes farticle=chata.champ(joint=article) facture=chata.champ(joint=tfacture,trigafterupdate=majlignes) quantite=chata.champ(trigafterupdate=majqte) tlfact=chata.table(facture,farticle,quantite)
#finalise la structure chata.autoname(globals())
#on crée 2 factures (en-têtes) ttfact.set(1,2007001,0,0) ttfact.set(2,2007002,0,0)
#on crée 8 lignes, 6 dans 1 facture, 2 dans l'autre tlfact.set(1,2007001,'cd',100) tlfact.append(2007001,'dvd',100) tlfact.append(2007001,'rhum',1) tlfact.append(2007001,'cognac',1) tlfact.append(2007001,'pastis',5) tlfact.append(2007002,'cd',2000) tlfact.append(2007001,'eau',12) tlfact.append(2007002,'dvd',2000) print print "sélection de tout ce qui est facturé en quantité>1" s1=tlfact.selectioninterval(quantite, 1.1,999999) chata.selection.visu(s1,facture,farticle,libelle,quantite) print print "sélection articles 'boisson'" s2=tarticle.selectioninterval(famille, 'boisson','boisson') chata.selection.visu(s2,article,famille,libelle) print print "sélection sur jointure (sélection précédente + facturé)" s3=tlfact.selectionjointure(farticle, s2) chata.selection.visu(s3,facture,farticle,famille,quantite)
print print "intersection ('boisson' + facturé + quantité>1)" s4=s3.intersection(s1) chata.selection.visu(s4,facture,farticle,famille,libelle,quantite)
print print "affiche têtes de facture, pour voir le résultat des déclencheurs" ttfact.visuall()
Stage 05 # -*- coding: cp1252 -*- import chata #déclaration d'une base dabase=chata.base()
#définition des champs article=chata.champ(index=True,uniq=True,long=10) libelle=chata.champ() prix=chata.champ(mini=0,maxi=99) famille=chata.champ()
#définition d'une table tarticle=chata.table(article,libelle,prix,famille)
#finalise la structure chata.autoname(globals())
#remplissage d'une table tarticle.set(1,'cd',"CD-ROM à l'unité",0.56,'informatique') tarticle.set(2,'dvd',"DVD-ROM à l'unité",0.86,'informatique') tarticle.set(3,'pastis',"Bouteille de pastis",13.99,'boisson') tarticle.set(6,'chateauneuf',"Châteauneuf du pape",34,'boisson') tarticle.set(5,'eau',"eau",2.20,'boisson') tarticle.append('eauf',"Eau ferrugineuse",2.80,'boisson') num=tarticle.append('python','Super-langage informatique') famille.value='informatique' prix.value=0.00
print print "visualisation du contenu" tarticle.visuall()
print print "test des contraintes" tarticle.append('python','Xxxxxx xx') #doublon : insertion rejetée tarticle.append('cher','produit de luxe',1000) #prix ramené à 99 tarticle.append('payant','produit pas assez cher',-12.50) #prix ramené à 0 tarticle.append('longcodearticle','trop long code article') #code raccourci libelle.value=[1,22,333,4444]
print "visualisation du contenu, après contraintes" tarticle.visuall()
dabase.enregistre()
Stage 06 # -*- coding: cp1252 -*- import chata #déclaration d'une base dabase=chata.base()
#définition des champs et tables article=chata.champ(index=True) libelle=chata.champ() prix=chata.champ() famille=chata.champ() tarticle=chata.table(article,libelle,prix,famille)
cond=chata.champ(index=True) clibelle=chata.champ() tconditionnement=chata.table(cond,clibelle) #finalise la structure chata.autoname(globals())
#remplissage d'une table tarticle.set(1,'cd',"CD-ROM à l'unité",0.56,'informatique') tarticle.set(2,'dvd',"DVD-ROM à l'unité",0.86,'informatique') tarticle.set(3,'pastis',"Bouteille de pastis",13.99,'boisson') tarticle.set(6,'chateauneuf',"Châteauneuf du pape",34,'boisson') tarticle.set(5,'eau',"eau",2.20,'boisson') tarticle.append('eauf',"Eau ferrugineuse",2.80,'boisson')
tconditionnement.append(12,'douzaine') tconditionnement.append(1,'unité') tconditionnement.append(6,'demi-douzaine') print print 'tconditionnement' tconditionnement.visuall() print
#visualisation du contenu print 'tarticle' tarticle.visuall() tarticle.infotable() tarticle.infochamp() tarticle.infojoint() #enregistreùent de la base dabase.enregistre() print print " _______________________________________________________________________" print print " Ajout champ conditionnement avant prix, avec 12 comme valeur par défaut" print " _______________________________________________________________________" print print conditionnement=chata.champ(joint=cond) tarticle.alter(conditionnement,addbefore=prix,default=12) #finalise la structure chata.autoname(globals()) print print 'tarticle' tarticle.visuall() tarticle.infotable() tarticle.infochamp() tarticle.infojoint() print print " ____________________________________" print print " Suppression du champ conditionnement" print " ____________________________________" print print
tarticle.alter(conditionnement,remove=True) #finalise la structure chata.autoname(globals())
print for i,j in tarticle.rec.iteritems(): print j print print print 'tarticle' tarticle.visuall() tarticle.infotable() tarticle.infochamp() tarticle.infojoint()
|