- accueil CHATA - exemples - Documentation - Tranche
- Résumé
- PONX - PLUIE - MClaveau
|
CHATA (Champs & Tables) Micro SGBD purement Python, en mémoire
Introduction à CHATA CHATA est un SGBD (Système de Gestion de Base de Données) en mémoire. CHATA est très simple d'utilisation, tout en gardant une puissance intéressante, permettant le développement d'application. Un petit exemple, commenté, vous donnera un aperçu de CHATA : # -*- coding: cp1252 -*- #on ouvre une base import chata dabase=chata.base() #déclaration des champs famille=chata.champ(index=True) descriptiffamille=chata.champ() article=chata.champ(index=True) libelle=chata.champ() prix=chata.champ() famillearticle=chata.champ(joint=famille) #déclaration des tables tfamille=chata.table(famille,descriptiffamille) tarticle=chata.table(article,libelle,prix,famillearticle) chata.autoname(globals()) #finalisation de la structure #ajout d'enregistrements tfamille.append('info','informatique') tfamille.append('boi','boisson') tarticle.append('cd',"CD-ROM à l'unité",0.56,'info') tarticle.append('dvd',"DVD-ROM à l'unité",0.86,'info') print prix.value #affichera 0.86 prix.value=round(prix.fromsearch(article,'cd')*1.25,2) print prix.value #affichera 0.7 tarticle.append('eau',"eau",2.20,'boi') tarticle.append('pastis',"Bouteille de pastis",13.99,'boi') tarticle.append('sirom',"sirop de menthe",3.40,'boi') tarticle.append('sirof',"sirop de fraise",3.40,'boi') tarticle.append('python','Super-langage informatique',0.00,'info') #sélection des articles où famillearticle=='boi' s=tarticle.selection(famillearticle,EQU='boi') #on trie le résultat l=chata.selection.sort(s,libelle) #affichage du résultat trié chata.listselect.visu(l,article,libelle,famille,descriptiffamille)
Notez les points suivants : - les noms des champs, tables, bases, sélections, utilisent des identifieurs standards de Python. Directement. Sans guillemets et autres apostrophes nuisant à la lisibilité.
- les jointures (liaisons entre tables), comme, dans l'exemple entre famille_article et famille, sont gérées de façon automatique. Il n'est jamais besoin de lancer une mise à jour, de préciser une recherche, etc. Dès que l'on est sur une article différent, la famille reliée est disponible, Et ce traitement s'enchaîne : une ligne de facture, jointe à un fichier article, joint à une famille, jointe à une catégorie, etc.
- pour lire écrire le contenu d'un champ, il suffit d'utiliser la propriété .value ; nul besoin de préciser la table, ou l'enregistrement. Il suffit d'utiliser directement le champ.
Quelques-unes des possibilités de CHATA : - travail direct sur les champs
- possibilité d'enregistrer les données sur disque (et de les relire, bien sûr)
- émulation de transaction (en fait, enregistrement des données, ou relecture des données antérieures aux modifications)
- gestion de plusieurs tables
- gestion d'index (mono-champs)
- gestion des jointures entre tables
- gestion des contraintes : mini, maxi, longueur_maxi
- gestion des déclencheurs (triggers) : avant et après modification du contenu d'un champ
- notion de sélections (résultats de requêtes simplifiées) ; les sélections peuvent être combinées (union et intersection)
- pas de tri des tables, mais on peut trier les sélections.
- nombreuses possibilités de contenu, pour les champs ; int, float, date, time, string, listes, dictionnaires, ...
- longueur des contenus limités seulement par la taille mémoire
- champs de longueur variable
- Unicode pleinement supporté.
- facilement intégrable à d'autres scripts Python
Version et Nouveautés La version 0.04a contient les évolutions suivantes : déboguage autoname plus simple (pour finalisation de la structure) fromsearch pour les champs (renvoie sur idx.searchexact)S
Le site évolue, avec 3 pages : - accueil
- (début de) documentation
- stages-exemples
La version 0.03 contient les évolutions suivantes : alter (table) selection.recuplist listselect.recuplist selection avec choix du critere de comparaison (EQU NEQ LEQ LSS GEQ GTR)
La version 0.02 contient les évolutions suivantes : corrections diverses autoname liste jointures par table rafraîchissement jointures par __getattr__ des tables CHANGEMENT paramètre nom dans tables et champs
La version 0.01 contient les évolutions suivantes : base.idxactivate() champ : gestion des contraintes mini, maxi, long champ : gestion contrainte uniq (traitée au niveau table.set) table.set incomplet table.set returne un flag table.append retourne le numéro créé intégration dans ponxupdate corr idx.searchexact si inexistant
Téléchargement Pour ouvrir le module, cliquer ici : chata.py (pour le télécharger avec IE, clic-droit, puis"Enregistrer la cible sous...")
Installation et dépendances CHATA fonctionne avec Python 2.5, qui doit déjà être installé. Il n'y a aucune dépendance, en dehors de la librairie standard. Pour installer CHATA, il suffit de copier le module dans le répertoire de travail, ou dans le PythonPath.
|