web-dev-qa-db-fra.com

Comment interroger la base de données par identifiant en utilisant SqlAlchemy?

Je dois interroger une base de données SQLAlchemy par son id quelque chose de similaire à

User.query.filter_by (username = 'peter')

mais pour id. Comment puis-je faire cela? [Recherche sur Google et SO n'a pas aidé]

67
user507220

La requête a un fonction get qui prend en charge l'interrogation par ID.

Par exemple, pour rechercher un objet dont l'ID est 23: User.query.get(23)

91
Mark Hildreth

Vous pouvez interroger un utilisateur avec id = 1 comme ceci

session.query(User).get(1)

33
peggygao1988

get () n'est pas comme prévu parfois:

si votre transaction a été effectuée:

>>> session.query(User).get(1)
[SQL]: BEGIN (implicit)
[SQL]: SELECT user.id AS user_id, user.name AS user_name, user.fullname AS user_fullname
FROM user
WHERE user.id = ?
[SQL]: (1,)
<User(u'ed', u'Ed Jones')>

si vous êtes dans une transaction (get () vous donnera l'objet résultat en mémoire sans interroger la base de données):

>>> session.query(User).get(1)
<User(u'ed', u'Ed Jones')>

mieux utiliser ceci:

>>> session.query(User.name).filter(User.id == 1).first()
[SQL]: SELECT user.name AS user_name
FROM user
WHERE user.id = ?
 LIMIT ? OFFSET ?
[SQL]: (1, 1, 0)
(u'Edwardo',)
5
panda912