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 :

Selectionner un objet avec SQLObject


Sujet :

Réseau/Web Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 70
    Par défaut Selectionner un objet avec SQLObject
    Bonjour,

    je souhaiterais savoir quelle est la meilleure façon de procéder pour sélectionner un objet SQLObject.
    Lorsqu'on a son id on peut faire par exemple:

    mais quand on a pas son id, mais qu'on s'attend normalement à ce que la requête retourne un unique résultat, comment faire ?

    Suis-je obligé de faire, par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    user_list = User.select(User.q.username == "Hugues")
    if user_list:
        user = user_list[0]
    else:
        raise Exception("Pas d'enregistrement trouvé")
    où y-a-t-il une manière plus courte de le faire, prévue par SQLObject ?

    Merci d'avance pour vos réponses.

    PS: si quelqu'un connait une doc un peu plus fournie que la doc du site http://www.sqlobject.org/SQLObject.html ça m'intéresse aussi.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 770
    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 770
    Par défaut
    Salut,
    J'utiliserai .getOne ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    user = User.select(User.q.username == "Hugues").getOne()[0]
    .getOne est documenté ainsi:
    In cases where your restrictions cause there to always be a single record in the result set, this method will return it or raise an exception: SQLObjectIntegrityError if more than one result is found, or SQLObjectNotFound if there are actually no results, unless you pass in a default like .getOne(None).
    Pour le reste, Ian Bicking a tellement de chantiers en cours sur Python qu'il a quelque peu délaissé le projet depuis quelques années.
    Dommage car à l'époque c'était bluffant.
    Personnellement je préfère utiliser SQLAlchemy en général et Elixir pour le tout venant. C'est simple, efficace, documenté, tutorialisé, sources lisibles,...
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    70
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 70
    Par défaut
    Merci! c'est exactement ce que je cherchais.
    Je vais aussi regarder SQLAlchemy et Elixir. Ils ont l'air mieux documenté (mais peut-être plus long à maîtriser) que SQLObject.

Discussions similaires

  1. [POO] Instancier un objet avec le nom de la classe
    Par shinchun dans le forum Langage
    Réponses: 4
    Dernier message: 08/06/2006, 13h44
  2. Réponses: 9
    Dernier message: 22/12/2005, 22h20
  3. Réponses: 3
    Dernier message: 22/12/2005, 00h40
  4. nommer un objet avec une variable
    Par fatcat dans le forum C++
    Réponses: 4
    Dernier message: 11/12/2005, 16h16
  5. A propos des modèles d'objet (avec sources)
    Par DevX dans le forum C++Builder
    Réponses: 14
    Dernier message: 01/12/2002, 12h22

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