web-dev-qa-db-ja.com

SqlAlchemyを使用してIDでデータベースを照会する方法は?

idのようなものでSQLAlchemyデータベースをクエリする必要があります

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

しかし、ID。どうすればいいですか? [Googleで検索してSOは助けにならなかった]

67
user507220

クエリには、IDによるクエリをサポートする get function があります。

たとえば、IDが23のオブジェクトを照会するには:User.query.get(23)

91
Mark Hildreth

次のようにid = 1のユーザーをクエリできます

session.query(User).get(1)

33
peggygao1988

get()は予想どおりではないことがあります:

トランザクションが完了した場合:

>>> 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')>

transaction(get()を使用している場合、データベースへのクエリなしでメモリ内に結果オブジェクトを提供します):

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

これを使用する方が良い:

>>> 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