Forum Programmation.autre Quel langage/outil pour divers développements (web/local) sur une base de données ?

Posté par  . Licence CC By‑SA.
2
30
sept.
2013

Bonjour tout le monde,

Je vous écris car je rencontre un problème que doivent rencontrer beaucoup de développeurs à leur début similaire à "quels outils pour quelles utilisations ?".

En effet, je traîne depuis longtemps en tête une idée de base de données qui contiendrait évidemment des informations que j'aimerais traiter.

Comme toute base de données, j'aimerais pouvoir insérer et récupérer des jeux de données assez facilement afin d'agrémenter la base et pouvoir en extirper des agrégats de données comme d'une aide à la décision.

J'aime bien partager ce que je fais, alors je me dis que ce serait cool que ce soit multiplateforme. Mais je ne sais pas quel langage ou quel outil utiliser (ou bien si je dois démarrer de rien). À noter que ce serait cool que la BDD soit embarquée dans le logiciel et que ce soit facile à installer.

Dans l'idéal, on se dit qu'on peut partir d'un outil déjà existant et participer afin de l'améliorer. Mais c'est toujours pareil, quand on a une idée en tête, on dévie fortement d'un projet existant, et ledit projet n'accepte pas toujours le changement/additif. Il en découle que soit on suit le projet de près et on s'échine à faire de la gestion d'erreurs sur des commits entre les deux projets, soit on devient un fork et on gère plus rien du tout parce qu'on connaissait pas assez bien l'outil.
Qui plus est, si on commence de rien, on réinvente des roues carrées… C'est très ennuyeux tout ça !

Par ailleurs, je ne connais, pour l'instant que le Python (que je trouve un peu lourd) et quelques bribes de Lua. Il m'intéresserait de le faire en Lua, mais c'est pas simple sans ORM de taper dans une BDD quand on a jamais fait ça.

Ainsi je vous le demande, commencez-vous "From scratch" vos projets ou bien cherchez vous un projet similaire pour l'améliorer ? Si vous utilisez des projets existants, est-ce plutôt des outils tels que SQLAlchemy, Django, etc. ?

Mon idée de projet est très proche d'une gestion de stock et d'achat, mais pour un particulier. Ce dernier est un profane vis à vis du jargon technique pour les outils de gestion d'achat/stock, du coup c'est très ennuyeux :-/.

Je vous remercie d'avance pour l'aide que vous pourrez m'apporter à ce sujet,

Blankoworld.

  • # Python & Sqlite

    Posté par  . Évalué à 3. Dernière modification le 01 octobre 2013 à 08:56.

    Perso j'utilise Python et Sqlite. C'est pratique car Sqlite est dans la bibliothèque standard de Python donc il n'y a pas de suppléments à installer. Pour l'interface graphique j'utilise tkinter qui est aussi dans la bibliothèque standard de Python.

    Sur n'importe quel poste (Linux, Windows ou Mac) il suffit d'installer Python3 pour que ça fonctionne.

    • [^] # Re: Python & Sqlite

      Posté par  (site web personnel) . Évalué à 3.

      Idem ici.

      C'est bien documenté, très simple, et vite fonctionnel.

      Prends soin de travailler avec python3 et pas python2 pour éviter d'avoir à mettre à jour plus tard.

      • [^] # Re: Python & Sqlite

        Posté par  . Évalué à 1.

        Merci pour ces premières réponses. Quelques questions supplémentaires (je sais, j'abuse ^_^) :

        • si un jour vous passez à une version en ligne de l'outil (quelques affichages par exemple), quel outil utilisez-vous ?
        • utilisez-vous les mêmes classes/méthodes de la couche métier de l'application pour votre application web ?
        • question documentation, plutôt PyDoc ou asciidoc (ou autre?)
        • même question pour les tests unitaires ?

        Si je pose ces questions c'est que jusqu'à maintenant je modifiais des outils existants. Donc je n'avais pas à choisir les outils.

        Là ça devient forcément plus tendus car le choix initial est tout de même crucial (selon moi) !

        • [^] # Re: Python & Sqlite

          Posté par  (site web personnel) . Évalué à 3. Dernière modification le 01 octobre 2013 à 21:46.

          Je ne suis pas assez spécialiste de python pour te conseiller un outil plutôt qu'un autre en réponse à tes questions précises. Mais je crois que ces questions précises peuvent se contenter d'une réponse très générique: je choisirais les outils fournis par défaut, et si ce n'est pas possible ou qu'il reste du choix, les outils que je connais/aime le plus.

        • [^] # Re: Python & Sqlite

          Posté par  . Évalué à 3.

          Tout ce qui suit est mon avis, subjectif et pas forcément le meilleur. D'autant que je ne fais plus énormément de Python ces temps-ci.

          si un jour vous passez à une version en ligne de l'outil (quelques affichages par exemple), quel outil utilisez-vous ?

          Bottle.py est un excellent micro framework Web.

          utilisez-vous les mêmes classes/méthodes de la couche métier de l'application pour votre application web ?

          Oui, à mon avis l'interaction Web n'est pas vraiment liée au code objet/modèle de données.
          (d'ailleurs selon la complexité de ton application, dans la catégorie léger, peewee est un sympathique ORM).

          question documentation, plutôt PyDoc ou asciidoc (ou autre?)

          Le standard, il me semble, est plutôt Sphinx.

          même question pour les tests unitaires ?

          Le module inclus est utilisable. Sinon, personnellement j'employais pytest, dont je préférais l'API.

          En théorie, tous les modules cités sont compatibles Python 2 et 3.
          Bon courage.

          • [^] # Re: Python & Sqlite

            Posté par  . Évalué à 0.

            Après quelques tests et recherches, voici quelques résultats :

            • Concernant Tkinter, j'ai trouvé ceci qui semble pas mal : http://sebsauvage.net/python/gui/. On apprend aussi à faire quelques interfaces en wxPython. Je n'ai pas encore totalement testé, mais ça me semble un bon début. Merci de m'avoir mis sur cette piste de Tkinter ;)
            • J'ai tenté d'utiliser peewee très brièvement, l'outil pwiz.py fourni avec est vraiment pas mal pour partir depuis une base de donnée et générer le modèle peewee en Python (pour peu qu'on ait pas de caractères accentués…)
            • À savoir qu'un peewee-flask existe qui permet d'utiliser Flask pour faire des sites web, c'est une bonne piste si je continue mon application en web
            • J'ai lu un hors-série d'un magazine linux pratique sur Django, ça semble être un très bon outil, mais les dépendances python font très peur, pour installation/déploiement je suis pas très à l'aise et en lisant les articles, ça m'a rappelé Ô combien il est ennuyeux de devoir faire un code en fonction des types d'attaques du web… je me souviens pourquoi j'aime les sites statiques désormais :)
            • Sphinx est effectivement le bon choix question documentation, à n'en pas douter ! J'ai lu la documentation rapide et comment l'utiliser, c'est un super outil. Merci.
            • Bottle.py me fait penser à Orbit sous Lua (Cf. http://keplerproject.org/en/Orbit). Je ne me souvenais plus qu'il existait _^
            • pytest semble aussi bien mieux fourni que pyunit, notamment tout ce qui est fixtures. À voir.

            Après, je tentais de voir ce qu'il était possible de faire en interface utilisateur "simple", sans trop faire de code derrière. Et j'ai bien l'impression que quoiqu'il arrive - console ou graphique - il faille coder comme un malade pour tester tout ce que l'utilisateur saisie comme données.

            Est-ce aussi votre impression ? Faites vous plutôt console ou graphique ?

            Je ne trouve rien qui permette de faire des interfaces consoles pour utilisateur et qui soit multiplateforme quasiment. Tandis qu'avec Tkinter, c'est intégré à Python. Curieux non ?

            • [^] # Re: Python & Sqlite

              Posté par  (site web personnel) . Évalué à 3.

              Je ne trouve rien qui permette de faire des interfaces consoles pour utilisateur et qui soit multiplateforme quasiment. Tandis qu'avec Tkinter, c'est intégré à Python. Curieux non ?

              Àmha, l'interface console par excellence est la ligne de commande. Si c'est pour avoir une GUI en ascii, je ne vois pas l'intérêt d'utiliser une console. Par contre la ligne de commande a l'avantage de pouvoir être utilisée dans des scripts, des alias, des tubes, et des substitutions de variables.

              • [^] # Re: Python & Sqlite

                Posté par  . Évalué à 0.

                Je ne suis pas totalement d'accord avec toi concernant les programmes en mode ligne de commande. On peut très bien imaginer vouloir éviter les dépendances à des interfaces graphiques gourmandes et donc vouloir permettre l'utilisation d'un mode "console" qui permette également une saisie rapide à l'aide des touches claviers.

                J'aimerais faire de la saisie en masse et je ne sais pas encore trop comment procéder notamment sur le fait qu'il y ait des dépendances entre plusieurs objets (contraintes d'intégrité).

                Après, niveau temps dépensé en développement, je peux comprendre que console ou graphique, c'est quasiment pareil. Ce qui amène probablement les gens à utiliser du mode graphique.

                • [^] # Re: Python & Sqlite

                  Posté par  (site web personnel) . Évalué à 2.

                  On peut très bien imaginer vouloir éviter les dépendances à des interfaces graphiques gourmandes et donc vouloir permettre l'utilisation d'un mode "console" qui permette également une saisie rapide à l'aide des touches claviers.

                  Ah, oui, je n'avais pas pensé à ça.

                  J'aimerais faire de la saisie en masse et je ne sais pas encore trop comment procéder notamment sur le fait qu'il y ait des dépendances entre plusieurs objets (contraintes d'intégrité).

                  J'ai été confronté à cette situation (je devais insérer des extraits de livres papiers). J'ai d'abord essayé avec une interface web, mais écrire dans un formulaire n'est pas très pratique. Au final, je l'ai fait avec un script et vim. Le script pré-calculait certains champs, les envoyait dans un fichier, ouvrait le fichier avec vim de sorte que je puisse y ajouter le texte des autres champs, et interprétait ensuite le fichier pour insérer le tout dans la base de donnée. Pour moi qui travaille souvent avec vim, c'était, je crois, la méthode la plus efficace.

                  Je te remercie pour le fil de discussion que tu as ouvert, car j'y ai découvert peewee et bottle, que je trouve extraordinairement pratiques !

  • # Et pourquoi pas en Perl

    Posté par  (site web personnel) . Évalué à 2.

    c'est standard pour connecter à n'importe quel base de données et il y a des environnements pour le web qui font une grosse partie du boulot. Par exemple, Mojolicious est un (il y en a d'autres) framework à la mode. Je suis tombé l'autre jour sur cette petite application qui ne sers pas à grand chose mais donne un exemple intéressant coté code.

    https://github.com/ldidry/lstu/

    Cela donne cela en pratique

    http://lstu.fiat-tux.fr/

Suivre le flux des commentaires

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