 sqlite avec python via elixir transcription de l atelier coagul présenté par gnunux le samedi 10 avril 2010 introduction elixir est une surcouche à sqlalchemy sqlalchemy permet de manipuler des bases de données en python sans connaître pour autant le langage sql paramétrage de vim nous pourrions configurer vim une bonne fois pour toute par contre si nous ajoutons la ligne suivante en bas de notre fichier  vim respectera la configuration indiquée pour ce fichier vim ts 4 sw 4 expandtab les tabulations seront donc de 4 espaces prérequis pour notre exemple il vous faut le paquet pythonelixir installer elixir ou pythonelixir tout dépend de la distribution gnu linux que vous utilisez ce paquet tirera les dépendances il vous faut également le paquet sqlite3 qui est l interface permettant de consulter des bdd sqlite en ligne de commande créer un nouveau fichier utiliser vim pour créer notre nouveau fichier vim test0py code de base  importe les methodes de la librairie elixir from elixir import lien vers la base de donnees metadatabind sqlite gaspachosqlite creation de la relation entre les classes et les tables setupall creation des tables si elles n existent pas createall commit pour que le travail soit pris en compte sessioncommit nettoyer la memoire avant la fin du programme sessionflush notre configuration de vim pour ce fichier vim ts 4 sw 4 expandtab lancer le programme de base pour lancer le programme python python test0py le code s exécute sans erreur si ce n est pas le cas il faut corriger il est possible d avoir un message vous disant que l utilisation de setupall est dépréciée n utilisez pas d accent dans votre fichier source code pour une base de données avec données  fichier test1py permet d utiliser des caracteres accentues pour les commentaires coding utf8 from elixir import création d une classe class chemin entity difficulte field integer name field unicodetext lien avec la class personne personnes onetomany personne class personne entity name field unicodetext age field integer lien avec la class chemin chemin manytoone chemin metadatabind sqlite gaspachosqlite setupall createall u pour unicode chemin1 chemin difficulte 5 name u chemin calme au bord de la rivière chemin2 chemin difficulte 1 name u chemin de montagne manu personne name u manu age 20 manuchemin chemin1 benjamin personne name u benjamin age 42 chemin chemin2 sessioncommit sessionflush vim ts 4 sw 4 expandtab lancer le programme pour lancer le programme python python test1py consulter la base de données  sqlite3 gaspachosqlite tables pour lister les tables dump pour faire un dump de la bdd exit pour quitter sqlite3 supprimer la base de données gaspachosqlite code pour une autre bdd avec données  fichier test2py coding utf8 from elixir import création d une classe class chemin entity difficulte field integer name field unicodetext lien avec la class rdv rdv onetomany rdv class personne entity name field unicodetext age field integer lien avec la class rdv rdv manytomany rdv class date entity date field unicodetext lien avec la class rdv rdvs onetomany rdv class rdv entity relations entre les différentes class date manytoone date chemin manytoone chemin personnes manytomany personne metadatabind sqlite gaspachosqlite setupall createall chemin1 chemin difficulte 5 name u chemin calme au bord de la rivière chemin2 chemin difficulte 1 name u chemin de montagne date1 date date u 18032011 date2 date date u 18042011 rdv1 rdv date date1 chemin chemin1 rdv2 rdv date date2 chemin chemin2 manu personne name u manu age 20 manurdv rdv1 rdv2 benjamin personne name u benjamin age 42 rdv rdv1 sessioncommit sessionflush vim ts 4 sw 4 expandtab lancer le programme pour lancer le programme python python test2py consulter la base de données  sqlite3 gaspachosqlite tables pour lister les tables dump pour faire un dump de la bdd exit pour quitter sqlite3 ne pas supprimer la base de données gaspachosqlite si vous l avez supprimée relancez le programme test2py code pour l interrogation de la bdd  fichier test3py coding utf8 from elixir import class chemin entity difficulte field integer name field unicodetext rdv onetomany rdv class personne entity name field unicodetext age field integer rdv manytomany rdv class date entity date field unicodetext rdvs onetomany rdv class rdv entity date manytoone date chemin manytoone chemin personnes manytomany personne metadatabind sqlite gaspachosqlite setupall print print test1 print datequeryall print print test1bis for date in datequeryall print datedate print print test2 for rdv in rdvqueryall for personne in rdvpersonnes print personneage print print test3 date datequeryfirst for rdv in rdvqueryfilterby date date all for personne in rdvpersonnes print personnename personneage print print test4 for rdv in rdvqueryall print rdvchemindifficulte vim ts 4 sw 4 expandtab lancer le programme pour lancer le programme python python test3py fichiers sources test0py test1py test2py test3py gaspachosqlite lié à test3py liens guide pour vim  http all4devlibreentrepriseorg indexphp guidedecontr c3 b4letotaldevim utilisation d elixir  http bloggoeminneeu indexphp post 20091127 elixir 3aunesurcoucheormpourpython  programmation  