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

Réseau/Web Python Discussion :

ORM et "count" sous sqlalchemy


Sujet :

Réseau/Web Python

  1. #1
    Invité
    Invité(e)
    Par défaut ORM et "count" sous sqlalchemy
    Bonsoir a tous

    Je dois etre fatigue, mais j'avoue ne pas avoir trouve de solution elegante a mon probleme...
    J'utilise Elixir, et ai construit mes bases de facon purement declarative (pas de mapper, rien de tout ca).

    Disons que j'ai 2 classes. Auteur et Livre, avec une jointure.
    Auteur aura donc un attribut "livres".

    Mon probleme : j'aimerais par exemple avoir une requete qui me renvoie la liste des auteurs ayant plus de x livres a leur actif.
    J'aimerais bien faire quelque chose du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    my_query = Auteur.query.filter(Auteur.livres.count()>x)
    , mais bien sur ca ne marche pas, vu que Auteur.livres n'est pas une requete...

    Je sais bien sur le faire en SQL pur, mais je me demandais s'il n'y avait pas une "jolie" facon de faire ca en restant dans la logique objet.
    J'ai vu ca et la qu'en modifiant le mapper on pouvait rajouter des attributs a la volee, etc... mais du coup je perds un peu l'esthetique du declaratif (si c'est pour tripoter un mapper, autant me passer d'Elixir du coup).

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Je sais bien sur le faire en SQL pur, mais je me demandais s'il n'y avait pas une "jolie" facon de faire ca en restant dans la logique objet.
    En SQL simple, je ne vois pas trop comment faire cela sans SELECT emboîtés.

    J'ai vu ca et la qu'en modifiant le mapper on pouvait rajouter des attributs a la volee, etc... mais du coup je perds un peu l'esthetique du declaratif (si c'est pour tripoter un mapper, autant me passer d'Elixir du coup).
    Le déclaratif reste simple tant que vous avez une relation 1:1 entre classes/instances et tables/rows.
    Le nombre de bouquins écrits par un auteur est un champ à calculer côté SGDB. L'ORM n'étant que la relation entre objets et tables, je ne vois pas comment il peut "aider" - simplement.
    - W
    PS: Vous pourriez dénormaliser la DB en ajoutant une colonne livresCnt à Auteurs et le maintenir via des triggers.
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. Caractere echappement (quote) et variables sous pgsql
    Par tonio.jt dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 11/10/2009, 21h06

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