Ohraimeur V0.5 : Nouveau logiciel Python éditeur de BDD SQLite3

Posté par . Modéré par Bruno Michel.
Tags :
15
16
mai
2010
Base de données
Ohraimeur est une nouvelle application permettant l'édition de base de données SQLite3. Il est publié sous licence GPL.

Cette application est avant tous une console offrant une coloration syntaxique et une autocomplétion permettant de dialoguer interactivement avec le SGBD. Elle propose également des outils pour faciliter l'édition de requêtes :
  • Affichage du MLD/R de la base de données ;
  • Affichage du code source des tables ;
  • Affichage du code source des triggers ;
  • Éditeur de tables ;
  • Éditeur d'ORM.
La saisie de requête SQL est facilitée par l'autocomplétion et la coloration syntaxique. Les petites interfaces graphiques accessibles par un clic droit sur le nom des tables de la liste permettent l'insertion de données, la suppression, et modification de celles-ci. Un aspect intéressant de Ohraimeur est la visualisation du Modèle logique des données permettant de voir facilement les relations entre les tables et de pouvoir facilement faire des requêtes croisées. Pour éviter la présence de requêtes SQL dans le code source de vos programmes écrit en Python, Ohraimeur permet de créer un module Python qui permettra de gérer vos bases de données avec du code objet. Par exemple, l'ORM permet d'écrire ceci :

Client(2, "Maurice" )

au lieu de :
mon_curseur.execute("INSERT INTO CLIENT VALUES (2, 'Maurice') ;")

Ohraimeur vise à combler un vide dans le petit monde de SQLite3, en proposant un logiciel simple, rapide et fonctionnel. Si vous le souhaitez, le développeur principal du projet cherche de l'aide dans son développement et toute aide sera la bienvenue.
  • # Pas de pickles !

    Posté par Anonyme . Évalué à 3.

    Je ne parviens pas à lancer le programme.

    J'ai le message suivant :

    File "ohraimeur", line 380, in
    start()
    File "ohraimeur", line 368, in start
    root = ClientWindow()
    File "ohraimeur", line 74, in __init__
    file_con = open( self.path_file_con, "rb" )
    IOError: [Errno 2] No such file or directory: '/home/olivier/.ohraimeur/data.pkl'


    Comment initialiser le fichier ~/.ohraimeur/data.pkl ?
    • [^] # Re: Pas de pickles !

      Posté par . Évalué à 3.

      Bonjour olivier_r

      Je suis désolé si l'installeur ne place pas toujours le fichier data.pkl

      pour y remédier il faut lancer le script remise_a_zero.py dans /ohraimeur-0.5/share/ohraimeur/

      cd /ohraimeur/share/ohraimeur/
      python remise_a_zero.py

      puis saisir 1 et faire Entrée.
      • [^] # Re: Pas de pickles !

        Posté par Anonyme . Évalué à 1.

        Ok, ça marche.

        J'ai également essayé une autre technique. Tester l'existence du fichier data.pkl. (avec une structure try/except) Effet secondaire utile: cela évite de devoir initialiser le fichier data.pkl.

        try:
        with open( self.path_file_con, "rb" ) as file_con:
        self.connexions_requetes = pickle.loads( file_con.read() )
        except:
        self.connexions_requetes = []
        • [^] # Re: Pas de pickles !

          Posté par . Évalué à 1.

          Cela va poser problème lors de la fermeture de Ohraimeur qui va chercher à
          sauvegarder les dernières requêtes saisies dans data.pkl mais ne va pas trouver une structure
          adapté.

          ...]
          except:
              self.connexions_requetes = []
              file_con.write( pickle.dumps( [] ) )
          • [^] # Re: Pas de pickles !

            Posté par Anonyme . Évalué à 1.

            Au contraire, je n'ai pas trouvé de problème particulier. Un fichier data.pkl tout à fait valide est créé à la fermeture du programme.
            • [^] # Re: Pas de pickles !

              Posté par . Évalué à 2.

              Autant pour moi.

              C'est tout à fait possible, mais le module searchconnect.py n'existant plus sur la version en développement, les choses étaient différentes de mon côté.
  • # Pourquoi ce nom ?

    Posté par . Évalué à 1.

    J'ai cherché (peut être mal) sur ton site l'origine de Ohraimeur, j'ai pas trouvé.
    Ne voyant pas trop le rapport avec sqlite il y en a peut être un avec python.
    Peux tu m'éclairer ? (Je suis intrigué)
    • [^] # Re: Pourquoi ce nom ?

      Posté par . Évalué à 4.

      C'est aussi un éditeur d'ORM. Je soupçonne que ça vient d'une citation d'un journaliste de Télé Matin sur France 2.
    • [^] # Re: Pourquoi ce nom ?

      Posté par . Évalué à 3.

      Bonjour Kangs

      C'est dû au fait que c'est un logiciel qui fait des ORM donc un orm-eur.
  • # Bug ?

    Posté par . Évalué à 1.

    >>Par exemple, l'ORM permet d'écrire ceci :
    >>
    >>Client(2, "Maurice" )
    >>au lieu de :
    >>mon_curseur.execute("INSERT INTO CLIENT VALUES (2, 'Maurice') ;")

    La non utilisation de 'bind variables' c'est due à un bug de python ou de l'ORM ?
    (sqlite supporte très bien les requêtes paramétrées)
    • [^] # Re: Bug ?

      Posté par (page perso) . Évalué à 2.

      Je pense que c'est par soucis de simplification pour l'exemple.

      Python supporte évidement de genre de sécurité bien pratique :
      >> mon_cursor.execute('insert into Client values(? ,?)', (2, 'Maurice'))
      • [^] # Re: Bug ?

        Posté par . Évalué à 1.

        >>Python supporte évidement de genre de sécurité bien pratique :
        Ce n'est pas qu'une question de sécurité.
  • # Un client par base...

    Posté par (page perso) . Évalué à 4.

    On trouve toujours un client par base : phpmyadmin, phppgadmin, mysql-query-browser, sqlitebrowser...

    Pourquoi à chaque fois une nouvelle application pour permettre l'édition de base de données et non pas une application plus générique ?

    J'ai l'impression que ce que je fais avec ce genre d'application est générique les rares fois ou je m'en sers.

    Pourquoi ne pas développer sous forme de greffon les parties qui ne le seraient pas ? Par exemple, dans un programme Perl, j'utilise toujours DBI qui est générique et jamais une interface dédiée. D'ou vient ce besoin de lier un client sur une base donnée ?
    • [^] # Re: Un client par base...

      Posté par . Évalué à 2.

      Bonjour,

      Pour le moment je cherche à faire en sorte que Ohraimeur puisse tourner sur des versions de Python allant de 2.6 à 3.1. Le problème est que pour le moment peu d'adaptateurs ont étés portés en 3.1. Les subtiles différences entre les SGBD et la norme SQL y sont également pour beaucoup. Par exemple, Sqlite3 ne permet pas la suppression d'un champ d'une table. L'IHM pour le "Alter Table" est donc différente que celle que j'aurais pu développer pour un autre SGBD.

      Il est vrai que Ohraimeur n'est pas pratique si l'on souhaite l'utiliser comme éditeur SQL générique. Je prends en compte cette remarque. Dans la prochaine version d'Ohraimeur je développerais plus la fenêtre d'édition de la dernière requête. J'ajouterais également une fonctionnalité pour extraire la BDD sous forme de requêtes SQL.
    • [^] # Re: Un client par base...

      Posté par . Évalué à 3.

      C'est ce que propose GdaBrowser ou plus avancé gsql.
      http://code.google.com/p/gsql/wiki/GSQLvsLIBGDAnMERGEANT

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n'en sommes pas responsables.