Journal sqla_helpers : Quelques trucs en vrac

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
6
29
sept.
2013

Salut Nal',

Décidément, si je prend la plume c'est toujours pour t'écrire autour du même sujet. Je me doute que tout cela t'ennuie, mais à moi ça me fait de la pub du bien et crois moi, je t'en suis très reconnaissant. Alors, je vais te parler de mon tout petit projet sur lequel de temps en temps j'écris quelques lignes de code.

Pour rappel, il s'agit sqla_helpers qui a pour première fonctionnalité de fournir du sucre syntaxique pour interroger ta base favorite à travers d'objets python et tout cela , grâce à ce merveilleux ORM qu'est SQLAlchemy.

Allez, je vais tenter de te mettre l'eau à la bouche si tu ne connais pas ou si tu ne t'en souviens pas :

Avec SQLAlchemy

session.query(Treatment).filter(Treatment.name=='bar').one()
session.query(Treatment).join(Status, Status.id == Treatment.status_id).filter(Status.name == u'SUCCESS').all()
# Oui, on pourrait utiliser la jointure implicite ce qui donnerait
session.query(Treatment).filter(Status.name == u'SUCCESS').all()

Avec sqla_helpers

Treatment.get(foo='bar')
Treatment.filter(status__name=u'SUCCESS')

A l'époque j'avais écrit ça pour le boulot, venant du monde de Django et commençant à travailler avec SQLAlchemy. L'utilité de ce machin là est à mon sens hyper subjectif. On aime ou on aime pas. J'ai continué à le maintenir à peu près et à lui apporter quelques petites bricoles, sachant que un ou deux projets s'en servent.

En 6 mois d'existence, on a réussi à trouver un petit bug qui a rapidement était corrigé mais d'un point de vue fonctionnalités, y'a pas grand chose à rajouter, sachant que tout le boulot est bien sûr délégué à SQLAlchemy, pas question de faire son taf, il le fait très bien.

J'en arrive donc à toutes les questions que j'ai pour toi cher journal,

Stabilisation du logiciel

Aujourd'hui je viens de publier la version 0.4.0 et en 6 mois d'existence, il y a vraiment peu eu d'évolution de fonctionnalités. Alors je te le demande cher journal, est-ce qu'il faut stabiliser la version et passer en 1.0.0 pour de bon ?

Appel à la traduction

Aujourd'hui, il y a une documentation en anglais. Initialement, tout était en français , car je préférerai avoir une bonne doc en français qu'un truc incompréhensible en anglais. Un collègue à l'époque avait fait cette traduction pour moi, et je l'en remercie, car moi même je n'aurai pas trouver le courage de le faire. Seulement aujourd'hui, cette traduction contient , je pense certain passage encore un peu flou. Oui, il n'est pas bilingue malheureusement et en plus de ça l'erreur est humaine. Donc, j'ai vue quelques erreurs (dictonnary..) que j'ai corrigé, mais je suis bien trop mauvais pour être exhaustif. Et je pense qu'il y certains passages dont la signification est encore un peu fausse . (Attention, je ne suis pas en train de cracher sur son travail, il a été super sympa de me la faire cette traduction, sans lui tout serait encore en français).

Donc, si tu es bon en anglais et est-ce que tu aurais l'amabilité de faire un tour sur la documentation et selon ton bon vouloir, soit me remonter ce qui ne va pas (orthographe, syntaxe, expression, flou…) soit carrément faire un commit sur le projet ( que je serais ravis d'accueillir !)

Le logiciel est-il utilisé ?

Je sais que un ou deux projets s'en servent. Je n'avais aucune intention de révolutionner le monde et de faire de ce truc là un standard. Sauf que voilà, quand je regarde sur pypi.python.org, il me dit qu'il y a peu près 560 téléchargements qui ont été fait le mois derniers (sachant qu'il est sortie depuis février 2013). Je sais bien qu'entre les builds automatiques et les upgrades de version, ça ne fait pas 500 utilisateurs tous les mois. Mais à ton avis, cher journal, est-ce que c'est un indicateur auquel on peut se fier ? Sachant que personne n'est venu me demander quoi que ce soit à propos du projet (bug, moyen d'utilisation, doc, etc).

Bookmark

Doc : http://sqla-helpers.readthedocs.org/en/latest/sqla_helpers.html
Github : https://github.com/moumoutte/sqla_helpers

  • # dans la doc

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

    s/models need to be declare as bellow:/models need to be declared as below:

    s/class can be use as cls/class can be used as cls

    s/need to build a/needs to build a

    s/Register a session maker can be dangerous/Registering a session maker can be dangerous

    s/dynamically a classemethod/dynamically a classe method
    (pas certain)

    s/may be you need to change/perhaps you need to change

    s/you can force an new record even a session/you can force an new record even if a session

    s/returns all database objects/returns all the database objects

    s/return an uniq maching object./returns an uniq maching object.

    s/Valid quering/Valid querying

    s/class ared definied/class are defined

    s/This still true for /This is still true for

    s/Quering a with entire object./Querying a with entire object.
    (mais manque un mot, non ?)

    s/Quering with relation`s attributes/Querying the relations attributes

    s/Quering all MyModel/Querying all MyModel
    (mais manque un mot non ?)

    s/Available operatores/Available operators

    s/More complex quering/More complex querying

    s/can build object/can build objects

    s/on the dictionnary/in the dictionary

    s/object are created./objects are created.

    s/Provide syntatix sugar/Provides syntactic sugar

    s/contains in database./contained in database.

    s/Return object as dictionary/Returns object as a dictionary

    s/to excludes unwanted/to exclude unwanted

    s/Return a list of objects/Returns a list of objects

    s/Return a object with criterions/Returns an object with criterions

    s/Return a object from class with attributes/Returns an object from class with attributes

    s/If all the primary key are found/If all the primary keys are found

    s/an axception is raised/an exception is raised

    s/If a quering on the attribute name from a Treatment object, the function ‘ll be called:/If a querying on the attribute name from a Treatment object, the function will be called:

    s/because of the attribute name/because the attribute name

    s/For a globale session/For a global session

    s/if you are sur/if you are sure

    s/Return a sqlachemy.orm.query.Query object./Returns a sqlachemy.orm.query.Query object.

    ウィズコロナ

    • [^] # Re: dans la doc

      Posté par  . Évalué à 3.

      Ah Cool ! Merci pour tout ce retour, je corrige ça de suite.

    • [^] # Re: dans la doc

      Posté par  . Évalué à 3.

      Me suis permis de mettre ton pseudo dans le commit de correction, mais si ça te gêne un petit commit --amend et un push -f résoudront rapidement le problème. Redis-moi.

      Merci de ton aide encore :)

      • [^] # encore dans la doc

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

        s/bellow/below

        s/session when needing/session when needed

        s/Quering with relations attributes/Querying with relations attributes

        pas compris
        Querying all MyModel with a MyOtherObject has MyOtherOtherObject has a name attribute is ‘foo’.

        la phrase contient de fois de suite has, c'est bizarre.

        s/gretter than/greater than

        s/gretter or equal than,/greater or equal than,

        s/python syntax/Python syntax

        s/with JSON format/using the JSON format

        s/have easier loading/have an easier loading

        bizarre
        The meaning of use a dictionary is to facilitate access to data
        tu veux dire quoi en français ?

        itou
        Objects are getting from database

        s/relations aren’t search./relations aren’t searched.

        s/If a quering on the attribute/If a querying on the attribute

        s/because of the attribute name isn’t in/because the attribute name isn’t in

        s/In other hand/On the other hand

        s/Register the function/Registers the function

        s/For a globale session/For a global session

        ウィズコロナ

        • [^] # Re: encore dans la doc

          Posté par  . Évalué à 2.

          Querying all MyModel with a MyOtherObject has MyOtherOtherObject has a name attribute is ‘foo’.

          Le V.O. : Demander tous les objets de la classe MyModel qui ont pour un attribut un MyOtherObject qui ont eu même pour attribut un myOtherOtherModel.

          Alors, qu'est-ce que ça veut dire ?

          class MyModel(DeclarativeBase):
                awesome_attr = MyOtherModel()
          

          et

          class MyOtherModel()
                other_attr = MyOtherOtherModel()
          

          En gros j'essaye juste de dire qu'on peut faire des recherches par rapport aux attributs des attributs d'un objet.

          The meaning of use a dictionary is to facilitate access to data

          De ce que je me souviens la V.O. disait un truc comme ça : "L'intérêt d'utiliser des dictionnaires, c'est qu'ils sont utilisables pour les deux parties (client en JavaScript qui reçoit et envoie du Json, Le serveur en python qui peut du coup charge des objets depuis la base avec un dictionnaire)

          Dès que j'ai le temps, je me remets sur tes corrections, merci encore, c'est très chouette de ta part. Pour te remercier, une nimage[Vue la source, je pense que cette image est libre de droit mais je n'ayant pas vu d'indication de licence, je m'autorise à la linker—Si je n'ai pas le droit n'hésitez pas à flinguer la dernière phrase, merci au modo !]

  • # Commentaire supprimé

    Posté par  . Évalué à 1.

    Ce commentaire a été supprimé par l’équipe de modération.

    • [^] # Re: Go go go !

      Posté par  . Évalué à 1.

      Ouais on va faire ça ! Le boulot de correction de la traduction, ça sera déjà une grande étape ! Est-ce que je passe directe de la version 0.4.1 à 1.0 ? Je mets quoi dans le changelog ? 1.0.0 => Final Release \o/

      • [^] # Commentaire supprimé

        Posté par  . Évalué à 3.

        Ce commentaire a été supprimé par l’équipe de modération.

Suivre le flux des commentaires

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