IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Choix d'une Base de données et interface graphique


Sujet :

Python

  1. #1
    Membre confirmé Avatar de Doudy
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 108
    Par défaut Choix d'une Base de données et interface graphique
    Bonjour,

    Voila, je dois créer une base de données, du genre carnet d'adresses, accessible depuis tous les postes d'un réseau local, avec une jolie interface utilisateur pour: créer, supprimer, modifier, envoyer des requêtes, imprimer des états, extraire des données au format excel pour faire des mailings avec word etc ...

    Tout le monde est sous XP ou Vista et le serveur est un Windows 2003

    Je suis libre de choisir les outils (langage + base de données) pourvu que ça ne coute rien de plus que le temps passé à développer !

    Pensez-vous que je fasse le bon choix :

    - Base de données: Firebird (un clone gratuit d'Interbase)
    - Langage pour développer l'interface graphique : Python + une librairie , mais je n'ai pas encore quelle librairie prendre pour avoir une interface la plus simple à développer et jolie possible (c'est à dire qu'elle colle visuellement le plus à XP).
    - Pour ce qui est du driver pour Python pour contrôler Firebird, je n'ai trouvé que KInterbasDB, qui semble être abandonné, et SQLAlchemy qui est plus général. En existe-t-il d'autres ? Laquelle me conseilleriez-vous ?

    Sinon auriez-vous d'autres suggestions pour développer simplement (car je débute en Python) et plutôt en Open Source, un tel logiciel ? Un RAD ?

    Merci d'avance pour vos conseils

    Doudy

  2. #2
    Membre émérite
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Par défaut
    Salut

    Je suis loin d'être calé en db avec python, et je ne connais Firebird que de nom.
    Je te conseillerais d'aller voir du côté de MySQL aussi Il y a de la connectivité depuis Python (quelque part sur sourceforge, je ne sais même pas ce que ça vaut)

    Pour la GUI, si tu veux quelque chose qui colle avec dos, je te conseillerais wxWidgets, puisqu'apparemment il se sert de la lib native. Qt est très bien aussi.

    Enfin, si tu cherches un bon IDE, il y a notamment PyDev si tu es famillier avec eclipse. A vrai dire c'est à mon goût le seul éditeur gratuit valable.
    Il y a une discussion à propos des IDE en épinglé sur le forum python

  3. #3
    Expert confirmé
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Par défaut
    kinterbasdb n'est pas abandonné du tout (enfin pas tout à fait). Suite à la disparition de Davis S. Rushby (il y a déjà quelques temps), le créateur de cette bibliothèque, il faut maintenant aller directement sur le site de Firebird (http://www.firebirdsql.org/index.php...vel&sub=python) pour récupérer la dernière version (3.3.0) qui est compatible avec les toutes dernières bases firebird 2.1

    Une nouvelle bilbiothèque devrait cependant être créée et optimisée uniquement pour Firebird (alors que kinterbasdb est compatible aussi Interbase 6)

    En revanche pour le choix de la BDD, c'est plutôt à partir de ce document (http://fadace.developpez.com/sgbdcmp/ ) que tu devrais faire ton choix. Tu devrais trouver pour presque toutes les BDDs les interface Python

  4. #4
    Membre chevronné
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    271
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Décembre 2006
    Messages : 271
    Par défaut
    Pour l'interface graphique, tu peux utiliser wxPython qui s'intègre très bien au système d'exploitation utilisé . (Je l'utilise pour cela en particulier) .

    MySQL et postgreSQL fonctionnent très bien sous windows et les deux ont un module python (respectivement MySQLdb et psycopg2) .

  5. #5
    Membre confirmé Avatar de Doudy
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 108
    Par défaut
    A propos de postgreSQL j'ai lu que sous windows les perf étaient déplorables.
    c'est pourquoi je pensais à Firebird.

    Je pense aussi à wxPython car j'ai regardé PyQt qui n'est pas gratuit en cas d'utilisation professionnelle.

    Ça fait donc le montage suivant : Python + wxPython + Firebird ou Postgresql + les bibliothèques SQLAlchemy ( requis pour Firebird: KInterbasDB )... ouf !!

    N'y aurait-il pas un RAD (Boa Constructor , Django ? ) qui gère tout cela ?

    Merci

  6. #6
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Mai 2002
    Messages : 309
    Par défaut
    Je développe une application outils métier en Python / wxPython / Firebird 2.
    Les librairies que j'ai installé est KInterbasDB, PyWin32.

    Je développe tout avec Boa.

    Le serveur est en Windows 2003 server, les clients sont XP, Win 2000.
    Mon appli contrôle 2 bases en même temps, une en local et une sur le serveur .

    Je n'ai aucun problème, tout marche super bien.

  7. #7
    Membre très actif
    Avatar de buggen25
    Ingénieur développement logiciels
    Inscrit en
    Août 2008
    Messages
    554
    Détails du profil
    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Août 2008
    Messages : 554
    Par défaut
    J'ai essayé de programmer quelque chose, rien de très spécial, bref j'essaye, je débute avec python, j'ai réussi a faire quelque chose avec mysql_python
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
     
    # -*- coding: cp1252 -*-
    import MySQLdb
    class employe:
        def __init__(self, db):
            self.db = db
            self.cursor = db.cursor()
     
        # Creation d'un nouvel employé
        def creer(self, matricule, patronyme, prenom, date_embauche, salaire, emploi_id, poste_id, unite_id):
            t = (matricule, patronyme, prenom, date_embauche, salaire, emploi_id, poste_id, unite_id)
            self.cursor.execute('INSERT INTO employe VALUES( %s, %s, %s, %s, %s, %s, %s, %s)',t)
            self.db.commit();
     
        # Modification d'un employé
        def modifier(self, matricule, patronyme, prenom, date_embauche, salaire, emploi_id, poste_id, unite_id):
            t = (patronyme, prenom, date_embauche, salaire, emploi_id, poste_id, unite_id, matricule) 
            self.cursor.execute('UPDATE employe SET patronyme = %s, prenom = %s, date_embauche = %s \
                                 , salaire = %s, emploi_id = %s, poste_id = %s, unite_id = %s where matricule = %s', t)
            self.db.commit();
            pass
        # Suppression d'un employé
        def supprimer(self, matricule):
            self.cursor.execute('DELETE FROM employe WHERE matricule = %s', matricule)
            self.db.commit();
     
        # récuperation des informations d'un employé suivant un matricule
        def lecture(self,matricule):
            self.cursor.execute('select * from employe where matricule = %s', matricule)
            numrows = int(self.cursor.rowcount)
            # get and display one row at a time
            for x in range(0,numrows):
                row = self.cursor.fetchone()
                print row[0], "-", row[1], "-", row[2], "-", row[3]
     
    mydb = MySQLdb.connect(host="localhost", user="root", passwd="XXXX", db="base")
    x = employe(mydb)
    x.creer('AAAAA','AAAA','aaaa','2009-05-15', 15000.0, 1, 4, 1)
    x.modifier('AAAAA','AAAAAA','aaaaa','2009-05-15', 15000.0, 1, 4, 1)
    x.lecture('AAAAA')
    x.supprimer('AAAAA')
    si sa peut t'aider dans ta démarche, je veux aussi savoir si il ya une inteface graphique simple autre que Tkinter

  8. #8
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Mai 2002
    Messages : 309
    Par défaut
    Il y a wxPython.

    Pour développer il y a Boa.

  9. #9
    Expert confirmé
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Par défaut
    Pour le choix d'une interface graphique, c'est ici: http://www.developpez.net/forums/f16...thon-zope/gui/

  10. #10
    Membre confirmé Avatar de Doudy
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 108
    Par défaut
    Citation Envoyé par Gamal le Celte Voir le message
    Je développe une application outils métier en Python / wxPython / Firebird 2.
    Les librairies que j'ai installé est KInterbasDB, PyWin32.

    Je développe tout avec Boa.

    Le serveur est en Windows 2003 server, les clients sont XP, Win 2000.
    Mon appli contrôle 2 bases en même temps, une en local et une sur le serveur .

    Je n'ai aucun problème, tout marche super bien.
    Merci Gamal le Celte pour ton retour d'expérience.

    C'est tout à fait la configuration de développement que j'envisage, sauf que je n'ai pas de base en local, mais 2 bases distantes.
    Il y a toutefois une chose qui va me manquer dans Firebird , c'est la recherche full texte qui ne semble pas être implémentée d'origine ...
    Je vient d'installer Firefox sur Windows server 2003 en 2 clic de souris ! donc ça va pour l'instant.
    Boa utilise-t-il la bibliothèque SQLAlchemy pour le mapping objet ou un autre ORM ou directement KInterbasDB ?

    Rectification : plus haut j'ai dit que PyQt était payant si utilisé professionnellement, mais je viens de lire que Qt était passé entièrement libre depuis mars 2009 ... simplement pour rectifier ....

    Merci Gamal le Celte

  11. #11
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Billets dans le blog
    15
    Par défaut
    En ce qui me concerne ça serait sans hésiter wxPython + SQlite.

    wxPython pour sa simplicité, pour toutes les ressources de dispo et pour l'aspect joli.

    SQlite pour sa simplicité et pour le fait qu'elle est distribué de base depuis python 2.5


    Pourquoi chercher plus compliqué???


    Tu parles à un moment de django. Django est un Frameworks permettant de faire des sites web dynamique. Je suis pas sûr que ce soit ce que tu souhaite faire.
    Concernant Boa, personnellement je n'aime pas. Je n'en aime d'ailleurs aucun autre. Je préfère tout coder à "la main".
    Ceci permet:
    * D'avoir un code propre.
    * D'avoir une architecture à ton image
    * De savoir ce que tu fais
    * De faciliter la maintenance de ton programme.

    J'espère t'avoir un peu aider.

    Bon courage
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  12. #12
    Membre confirmé Avatar de Doudy
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 108
    Par défaut
    Citation Envoyé par Jiyuu Voir le message
    En ce qui me concerne ça serait sans hésiter wxPython + SQlite.
    ......................
    Mais SQlite, ce n'est pas qu'une base en local ? On peut l'utiliser aussi en réseau ?
    Pour Django, je me demande s'il est possible de développer des applications non Web ... il me semblait l'avoir lu quelque part ?

  13. #13
    Rédacteur/Modérateur

    Avatar de Jiyuu
    Homme Profil pro
    Développeur amateur
    Inscrit en
    Janvier 2007
    Messages
    2 456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur amateur
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 456
    Billets dans le blog
    15
    Par défaut
    Pour Sqlite j'aurai tendance à dire oui puisque tu peux l'utiliser avec Django... (c'est d'ailleurs avec ça que je l'ai connu )

    Pour Django, je pense aussi que cela soit possible. Je pense que l'on pourrait appeler ceci non pas une application internet, mais intranet...
    Maintenant, je suis pas assez expérimenté là dedans pour dire si on peut faire encore d'autres choses.
    Perso, je pense pas que Django soit nécessaire pour ce que tu veux faire. j'ai peur que cela complique trop la chose.

    A titre d'exemple voila un petit exemple d'utilisation de SQlite qui pourra certainement te donner des idées:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    # -*- coding: iso-8859-1 -*-
     
    # import de SQLITE
    import sqlite3,os,os.path
    if os.path.exists('prem1.db') : os.remove('prem1.db') # J'efface l'ancien pour les essais
    connection = sqlite3.connect('prem1.db') #Création d'un objet connection à la BDD, connection ou création si pas d'existence
    c = connection.cursor() #Création de l'objet curseur
     
    #  Création de la table
    c.execute('''create table stocks(date text, trans text, symbol text, qty real, price real)''')
    c.execute('''create table coucou_marcel(date text, trans text, symbol text, qty real, price real)''')
     
    # Entrée directe d'enregistrement
    c.execute("""insert into stocks values ('2006-01-05','BUY','RHAT',100,35.14)""")
    c.execute("""insert into coucou_marcel values ('16-05-2009','BUY','RHAT',100,35.14)""")
     
    # Larger example
    for t in [('2006-03-28', 'BUY', 'IBM', 1000, 45.00),
              ('2006-04-05', 'BUY', 'MSOFT', 1000, 72.00),
              ('2006-04-06', 'SELL', 'IBM', 500, 53.00),
             ]:
        c.execute('insert into stocks values (?,?,?,?,?)', t)
     
    connection.commit()
    c.close()
    connection.close()
     
    connect = sqlite3.connect('prem1.db') #Création d'un objet connection à la BDD, connection ou création si pas d'existence
    c2 = connect.cursor() #Création de l'
     
    # Affichage des enregistrements
    print "Parcours direct du curseur avec une boucle for"
    c2.execute('SELECT * FROM stocks')
    for row in c2 :
        for r in row:
            print r,
        print
    print
     
    c2.execute('select * from stocks order by price')
    for row in c2 :
        print row
    print
     
    c2.execute('select * from stocks order by qty')
    for row in c2 :
        print row
    print
     
    c2.close()
    connect.close()
    Je pense que no comment est de mise...

    Bye
    Initiation à Qt Quick et QML : Partie 1 - Partie 2
    En cas de besoin, pensez à la
    Mon site et mes tutoriaux sur Developpez.com
    Pas de question technique par MP... Les forums sont là pour ça

  14. #14
    Membre confirmé Avatar de Doudy
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 108
    Par défaut
    Merci à tous pour vos conseils.

    Maintenant je vais m'y mettre sérieusement.

    Je vais déjà essayer la recette Python / wxPython / Firebird 2.
    saupoudré des librairies KInterbasDB et PyWin32.

    avec un zeste de Boa pour aller + vite

    et je vais voir si la mayonnaise prend

    Merci encore !

  15. #15
    Membre chevronné
    Homme Profil pro
    Inscrit en
    Mai 2002
    Messages
    309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations forums :
    Inscription : Mai 2002
    Messages : 309
    Par défaut
    Voici un petit tuto

    C'est un début.
    Bon courage

  16. #16
    Inactif  
    Avatar de Mac LAK
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    3 893
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 3 893
    Par défaut
    Pour ma part, je choisirais plutôt une base de données MySQL, gratuite aussi, mais largement mieux documentée...

    Côté interface, si cela doit être utilisable sur tous les postes, pourquoi n'envisages-tu pas une interface Web ? En installant Apache / PHP / MySQL, tu peux faire quelque chose de pas mal du tout, ne nécessitant aucun déploiement explicite en plus, et taper dans la base de données avec du PHP est à peu près aussi difficile que de piquer le biberon d'un gamin... Pour les fichiers, tu peux aussi installer un serveur FTP pour gérer automatiquement les envois / réceptions de fichiers sur les postes, gérer des "locks" manuels quand le fichier est sur le poste de quelqu'un (lock "lâché" quand il le renvoie au serveur), bref t'as une très grosse marge de manœuvre pour faire ton truc.

    Inconvénient, cela aura un look "web" et non pas "XP", c'est le souci majeur... Avantage, c'est super fiable et éprouvé, t'as pas assez de ta vie entière pour lire toute la doc existante sur le sujet, et ça répond à tous tes autres besoins.


    Autre solution : C#/WPF... Le wrapping entre C# et une BDD est simplissime, l'interface graphique est très propre et bien intégrée à Windows, le seul inconvénient est que tu devras utiliser la version gratuite de Visual Studio qui n'est pas aussi conviviale que la version payante... Mais bon, ça marchera quand même, ce sera juste un peu moins pratique.
    Par contre, faudra déployer l'application, mais sur une machine XP "normale", le framework est déjà installé et c'est ce qui pourrait poser le plus de soucis.


    A part ces deux solutions qui me viennent à l'esprit immédiatement, je n'ai rien d'autre à te proposer... Sauf si tu as des contraintes supplémentaires qui empêcherait d'utiliser l'une de ces deux solutions.
    Mac LAK.
    ___________________________________________________
    Ne prenez pas la vie trop au sérieux, de toutes façons, vous n'en sortirez pas vivant.

    Sources et composants Delphi sur mon site, L'antre du Lak.
    Pas de question technique par MP : posez-la dans un nouveau sujet, sur le forum adéquat.

    Rejoignez-nous sur : Serveur de fichiers [NAS] Le Tableau de bord projets Le groupe de travail ICMO

  17. #17
    Membre confirmé Avatar de Doudy
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 108
    Par défaut
    @Gamal le Celte

    Merci pour ce très bon tuto que j'ai suivi.

    En fait, ça ne marche pas car dès que je veux ouvrir un fichier .py à partir de boa, j'ai l'erreur suivante :
    UnicodeDecodeError:'ascii' codec can't decode byte 0xe9 in position 27 : ordinal not in range 128

    Merci d'avance pour ton aide

    Doudy

  18. #18
    Membre confirmé Avatar de Doudy
    Profil pro
    Inscrit en
    Avril 2003
    Messages
    108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2003
    Messages : 108
    Par défaut
    Après moultes manipulations et recherches j'ai trouvé la solution et tout est rentré dans l'ordre

    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. choix d'une base de données simple
    Par semenzato dans le forum Décisions SGBD
    Réponses: 3
    Dernier message: 12/07/2005, 14h18
  2. choix d'une base de donnée
    Par frisouille dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 17/06/2005, 15h52
  3. Choix d'une base de données
    Par AlexB59 dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 07/06/2005, 17h02
  4. Choix d'une base de données
    Par maurice66 dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 15/07/2004, 10h14

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo