- 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.