23 votes

Interface GUI pour la saisie de données sqlite en Python

Je suis en train de créer une base de données sqlite simple pour stocker des informations non sensibles sur les clients. Je suis très familier avec python+sqlite et je préférerais m'en tenir à cette combinaison pour ce projet. Je voudrais créer une interface graphique simple pour la saisie des données et la recherche dans la base de données... quelque chose de très similaire à ce que MS Access fournit. Je veux que ma femme soit capable d'entrer/rechercher des données facilement, donc le style PHPmyadmin est hors de question.

Je comprends que je pourrais céder et prendre MS Access, mais si c'est raisonnablement possible, je préférerais écrire le code moi-même afin qu'il fonctionne sur mes ordinateurs (*nix) et qu'il soit flexible (afin que je puisse l'intégrer ultérieurement à une application web et à nos téléphones intelligents).

Les développeurs peuvent-ils recommander des interfaces/paquets/etc (de préférence pythoniques) qui peuvent accomplir cela avec une facilité raisonnable ?

Gracias.

11voto

Anthony Points 11798

Puisque vous êtes intéressé par une intégration future avec une application web, vous pourriez envisager d'utiliser un framework web Python et d'exécuter l'application localement sur votre machine, en utilisant votre navigateur web comme interface. Dans ce cas, une option simple serait web2py . Juste télécharger Vous pouvez également utiliser l'IDE basé sur le web ( Démonstration ) pour créer très rapidement une application CRUD simple (si vous voulez vraiment rester simple, vous pouvez même utiliser l'assistant "Nouvelle application" ( Démonstration ) pour construire l'application). Il comprend son propre serveur, de sorte que vous pouvez exécuter votre application localement, tout comme une application de bureau.

Vous pouvez utiliser l'outil web2py DAL (couche d'abstraction de base de données) pour définir et créer votre base de données et vos tables SQLite (sans écrire de SQL). Par exemple :

db = DAL('sqlite://storage.db')

db.define_table('customer',
    Field('name', requires=IS_NOT_IN_DB(db, 'customer.name')),
    Field('address'),
    Field('email', requires=IS_EMAIL()))

Le code ci-dessus va créer une base de données SQLite appelée storage.db et créer une table appelée 'customer'. Il spécifie également des validateurs de formulaire pour les champs 'name' et 'email', de sorte que chaque fois que ces champs sont remplis via un formulaire, les entrées seront validées ('name' ne peut pas déjà être dans la base de données, et 'email' doit être un format d'adresse électronique valide) - si la validation échoue, le formulaire affichera des messages d'erreur appropriés (qui peuvent être personnalisés).

Le DAL s'occupera également du schéma migrations automatiquement, de sorte que si vous modifiez vos définitions de table, le schéma de la base de données sera mis à jour (si nécessaire, vous pouvez désactiver les migrations complètement ou sur une base par table).

Une fois que vous avez défini vos modèles de données, vous pouvez utiliser la fonction de web2py CRUD pour gérer la saisie et la recherche des données. Il suffit d'inclure ces deux lignes (en fait, elles sont déjà incluses dans l'application d'échafaudage de "bienvenue") :

from gluon.tools import Crud
crud = Crud(db)

Et dans un contrôleur, définissez l'action suivante :

def data():
    return dict(form=crud())

Cela exposera un ensemble d'URL prédéfinies qui vous permettront de créer, de lister, de rechercher, de visualiser, de mettre à jour et de supprimer des enregistrements dans n'importe quelle table.

Bien sûr, si vous n'aimez pas certains comportements par défaut, il existe de nombreuses façons de personnaliser les formulaires/affichages CRUD, ou vous pouvez utiliser certaines des autres fonctionnalités de web2py. fonctionnalité des formulaires pour construire une interface entièrement personnalisée. Et comme web2py est un framework complet, il sera facile d'ajouter des fonctionnalités à votre application au fur et à mesure de vos besoins (par exemple, contrôle d'accès, notifications, etc.).

Notez que web2py ne nécessite aucune installation ou configuration et n'a pas de dépendances, il est donc très facile de distribuer votre application à d'autres machines -- il suffit de zipper le dossier web2py entier (qui inclura votre dossier d'application) et de le dézipper sur une autre machine. Il fonctionnera sur *nix, Mac et Windows (sous Windows, vous devrez soit installer Python, soit télécharger le binaire Windows de web2py au lieu de la version source -- le binaire Windows comprend son propre interpréteur Python).

Si vous avez des questions, il y a une équipe très utile et réactive. liste de diffusion . Vous pourriez également trouver des idées dans des applications web2py .

2voto

mac Points 16282

J'utilise normalement GTK+ qui est bien documenté. Liaisons Python .

Le plus grand avantage est que vous pouvez utiliser un éditeur graphique assez intuitif ( Glade ) et de lier automatiquement les callbacks aux événements (pour être honnête, la plupart des autres boîtes à outils graphiques majeures ont aussi cette possibilité, comme par exemple QT, mais ma perception est que GTK+ bénéficie d'une plus grande adoption dans la communauté Python). EDIT : de plus, GTK est utilisé par Gnome et de nombreux autres environnements de bureau (KDE utilise QT cependant).

Cela dit, si tout ce dont vous avez besoin est vraiment l'insertion de données par une personne de confiance, vous pourriez utiliser quelque chose de déjà fait comme Gestionnaire SQLite (c'est un plugin FireFox).


Solution radicalement alternative : utiliser django et vous pouvez littéralement Passez de la lecture du tutoriel à la mise en place de votre application en quelques heures, y compris les authentifications des utilisateurs, l'interface administrative back-end, etc. (votre projet est exactement ce que j'ai fait avec lui pour permettre à ma femme d'insérer des dépenses dans notre budget familial).

Django est écrit en Python et vous pouvez utiliser SQLite comme back-end.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X