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é]
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)
Vous pouvez interroger un utilisateur avec id = 1 comme ceci
session.query(User).get(1)
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',)