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

PyQt Python Discussion :

Lequel choisir: QtSQL ou Python sqlite3 seul pour appli GUI (pyqt - pyside) pour la BDD


Sujet :

PyQt Python

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2012
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2012
    Messages : 6
    Points : 6
    Points
    6
    Par défaut Lequel choisir: QtSQL ou Python sqlite3 seul pour appli GUI (pyqt - pyside) pour la BDD
    Bonsoir,

    Je suis en train de développer ma premier application GUI. J'ai besoin d'employer une base des données mais je ne sais pas si ça sera mieux d'utiliser QtSQL ou sqlite3 de python seul?

    Mes modèles de données ne sont pas compliquées. Je n'ai pas vraiment besoin de SQLAlchemy ou une autre ORM.

    Je suis assez competent avec Python et SQL mais pas avec experience au niveau de Qt.

    Donc ma question:

    Qu'est-ce que vous me recommanderiez ?

    Merci !

    PS. Je serais également content d'apprendre de vos experiences des BDD avec Qt.

  2. #2
    Expert éminent
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 461
    Points : 9 248
    Points
    9 248
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    J'utilise pas mal sqlite3 avec PyQt4. Un de mes programmes a une base de données de plusieurs milliers d'articles et 15 tables avec transactions, contraintes de clé étrangères, triggers, mises à jour et effacements en cascade, tri selon le dictionnaire français (collate), recherche de mots similaires, etc... Ça marche très bien! Même si sqlite3 reste du niveau du SQL92, il est largement assez puissant pour une application liée à un programme (sans accès concurrent).

    Pour choisir entre le pilote sqlite3 de Python et QtSql, voilà ma règle: je n'utilise QtSql (et son pilote sqlite3) que quand il y a du graphique! Quand il n'y en a pas, c'est le pilote normal de Python. Ceci à l'intérieur d'une même application: Rien n'empêche d'accèder à la même base de données avec l'un ou l'autre des pilotes. On essaie simplement de ne pas ouvrir la même base au même moment avec les 2 pilotes.

    Les 2 raisons de ce choix sont les suivantes:
    1- je préfère nettement les fonctionnalités du pilote Python au pilote QtSql pour tout ce qui n'est pas graphique (gestion des transactions en particulier)
    2- le pilote sqlite3 de QtSql est toujours plus ancien que celui de Python, et je ne sais pas le mettre à jour (alors que je mets à jour le pilote de Python pour avoir le dernier)

    Cependant, rien n'empêche de n'utiliser que le pilote sqlite3 de QtSql!

    Au niveau graphique, donc avec QtSql, j'utilise principalement la visualisation des tables avec QTableView (comme avec un tableur). Ceci pour consulter et modifier les données des tables existantes. J'ai aussi un programme de consultation qui permet à des requêtes de type "select" de créer des tables temporaires qui sont immédiatement affichées avec QTableView. Avec ces affichages, je sais trier (multicritères), filtrer et rechercher par différents moyens (expressions régulières, mots qui se ressemblent, ...), copier-coller ou "drag & drop" avec Excel, imprimer dans un fichier .csv, etc...

    Un des nombreux avantages de la visualisation par QTableView/QtSql est que les colonnes ayant des contraintes de clés étrangères sont visualisées avec des combobox ne contenant que les valeurs permises. Cependant, quand le nombre de valeurs est très grand, la recherche de la valeur qu'on veut dans le combobox est pénible, parce qu'elle ne porte que sur le 1er caractère. Par exemple s'il y a 20 mots commençant par la même lettre, il faut taper 20 fois le 1er caractère pour accéder au dernier mot. Alors je l'ai remplacé par un autre composant que j'ai créé sur la base d'un QLineEdit avec completion: la recherche porte sur les premiers caractères et on trouve beaucoup plus vite.

    Par contre, on fait des choses étonnantes avec le pilote sqlite3 normal de Python. Par exemple, on peut transformer toute la base de données en script SQL et la reconstruire à l'identique en l'exécutant! Cela permet non seulement de faire une vérification d'intégrité référentielle de la base, mais aussi de faire des modifications de structure de la base au delà de ce que sqlite3 permet.

    Tout cela pour dire que quand on a des données à gérer avec un programme (sans accès concurent), on peut faire à peu près ce qu'on veut avec sqlite3, en graphique ou pas!

    A noter que, cerise sur le gâteau, les programmes PyQt4-QtSql supportent très bien d'être convertis en programme "standalone" par cx_freeze, ce qui permet de les diffuser sans obliger les utilisateurs à installer Python ni PyQt4.
    Un expert est une personne qui a fait toutes les erreurs qui peuvent être faites, dans un domaine étroit... (Niels Bohr)
    Mes recettes python: http://www.jpvweb.com

  3. #3
    Futur Membre du Club
    Inscrit en
    Décembre 2012
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Décembre 2012
    Messages : 6
    Points : 6
    Points
    6
    Par défaut
    Bonsoir tyrtamos,

    Je te remercie énormément pour avoir partager tes experiences et ces explications sur le sujet. Ça m'a beaucoup aidé et j'en suis sûr que ça sera également important pour les autres. Peut-être il te faudra créer un blog pour écrire et partager tous sujet par sujet sur Qt et Python. ;-)

    Merci !

    Citation Envoyé par tyrtamos Voir le message
    Bonjour,

    J'utilise pas mal sqlite3 avec PyQt4. Un de mes programmes a une base de données de plusieurs milliers d'articles et 15 tables avec transactions, contraintes de clé étrangères, triggers, mises à jour et effacements en cascade, tri selon le dictionnaire français (collate), recherche de mots similaires, etc... Ça marche très bien! Même si sqlite3 reste du niveau du SQL92, il est largement assez puissant pour une application liée à un programme (sans accès concurrent).

    Pour choisir entre le pilote sqlite3 de Python et QtSql, voilà ma règle: je n'utilise QtSql (et son pilote sqlite3) que quand il y a du graphique! Quand il n'y en a pas, c'est le pilote normal de Python. Ceci à l'intérieur d'une même application: Rien n'empêche d'accèder à la même base de données avec l'un ou l'autre des pilotes. On essaie simplement de ne pas ouvrir la même base au même moment avec les 2 pilotes.

    Les 2 raisons de ce choix sont les suivantes:
    1- je préfère nettement les fonctionnalités du pilote Python au pilote QtSql pour tout ce qui n'est pas graphique (gestion des transactions en particulier)
    2- le pilote sqlite3 de QtSql est toujours plus ancien que celui de Python, et je ne sais pas le mettre à jour (alors que je mets à jour le pilote de Python pour avoir le dernier)

    Cependant, rien n'empêche de n'utiliser que le pilote sqlite3 de QtSql!

    Au niveau graphique, donc avec QtSql, j'utilise principalement la visualisation des tables avec QTableView (comme avec un tableur). Ceci pour consulter et modifier les données des tables existantes. J'ai aussi un programme de consultation qui permet à des requêtes de type "select" de créer des tables temporaires qui sont immédiatement affichées avec QTableView. Avec ces affichages, je sais trier (multicritères), filtrer et rechercher par différents moyens (expressions régulières, mots qui se ressemblent, ...), copier-coller ou "drag & drop" avec Excel, imprimer dans un fichier .csv, etc...

    Un des nombreux avantages de la visualisation par QTableView/QtSql est que les colonnes ayant des contraintes de clés étrangères sont visualisées avec des combobox ne contenant que les valeurs permises. Cependant, quand le nombre de valeurs est très grand, la recherche de la valeur qu'on veut dans le combobox est pénible, parce qu'elle ne porte que sur le 1er caractère. Par exemple s'il y a 20 mots commençant par la même lettre, il faut taper 20 fois le 1er caractère pour accéder au dernier mot. Alors je l'ai remplacé par un autre composant que j'ai créé sur la base d'un QLineEdit avec completion: la recherche porte sur les premiers caractères et on trouve beaucoup plus vite.

    Par contre, on fait des choses étonnantes avec le pilote sqlite3 normal de Python. Par exemple, on peut transformer toute la base de données en script SQL et la reconstruire à l'identique en l'exécutant! Cela permet non seulement de faire une vérification d'intégrité référentielle de la base, mais aussi de faire des modifications de structure de la base au delà de ce que sqlite3 permet.

    Tout cela pour dire que quand on a des données à gérer avec un programme (sans accès concurent), on peut faire à peu près ce qu'on veut avec sqlite3, en graphique ou pas!

    A noter que, cerise sur le gâteau, les programmes PyQt4-QtSql supportent très bien d'être convertis en programme "standalone" par cx_freeze, ce qui permet de les diffuser sans obliger les utilisateurs à installer Python ni PyQt4.

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 21/05/2007, 23h32
  2. [Flash/HTML] lequel choisir pour une intégration d'un XML ?
    Par freija dans le forum XML/XSL et SOAP
    Réponses: 2
    Dernier message: 25/07/2006, 10h07
  3. Serveur FTP - Lequel choisir pour mes besoins
    Par etumed dans le forum Réseau
    Réponses: 3
    Dernier message: 19/03/2006, 14h58
  4. [SGBD gratuit]Lequel choisir pour simplement 4 utilisateurs?
    Par afrikha dans le forum Décisions SGBD
    Réponses: 4
    Dernier message: 03/03/2006, 19h23
  5. [FEDORA] Lequel choisir entre Fedora i386 et x86 pour un xeon?
    Par Oberon dans le forum RedHat / CentOS / Fedora
    Réponses: 7
    Dernier message: 13/07/2004, 15h52

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