Quelle est la différence entre les deux .un() et .(première)
Quelle est la différence entre one
et first
méthodes de SQLAlchemy
Vous devez vous connecter pour publier un commentaire.
Quelle est la différence entre one
et first
méthodes de SQLAlchemy
Vous devez vous connecter pour publier un commentaire.
Query.one()
exige qu'il y a seulement un résultat dans le jeu de résultats; c'est une erreur si la base de données renvoie 0 ou 2 ou plus de résultats et une exception sera levée.Query.first()
renvoie le premier d'une potentiellement plus vaste ensemble de résultats (en ajoutantLIMIT 1
la requête), ouNone
si il n'y avait pas de résultats. Aucune exception n'est levée.À partir de la documentation pour
de la Requête.un()
:et de
de la Requête.first()
:(l'emphase est mienne).
En termes d'une liste Python,
one()
serait:tout
first()
serait:Il y a aussi un
de la Requête.one_or_none()
méthode, ce qui soulève une exception uniquement si il y a plusieurs résultats de la requête. Sinon ça va retourner le résultat unique, ouNone
si il n'y avait pas de résultats.Dans la liste de termes, qui serait l'équivalent de:
first
peut utiliserLIMIT
dans la requête, tandis queone
ne l'est pas, ce qui pourrait signifier quefirst
causes sous-requêtes de jointures, alors queone
ne le serait pas. Cela pourrait être un très pertinente en raison de l'utilisation d'one
.first()
tranches, qui est automatiquement traduit enLIMIT
. Liés à la documentation stipule explicitementLIMIT
est utilisé.