Как запросить базу данных по идентификатору с помощью SqlAlchemy? - PullRequest
64 голосов
/ 19 июля 2011

Мне нужно запросить базу данных SQLAlchemy по ее id что-то похожему на

User.query.filter_by (имя пользователя = 'питер')

но для удостоверения личности. Как мне это сделать? [Поиск по Google и SO не помогли]

Ответы [ 3 ]

87 голосов
/ 20 июля 2011

Запрос имеет функцию get , которая поддерживает запросы по идентификатору.

Например, для запроса объекта с идентификатором 23: User.query.get(23)

32 голосов
/ 22 апреля 2016

Вы можете запросить пользователя с id = 1 следующим образом

session.query(User).get(1)

3 голосов
/ 24 августа 2018

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

вы находитесь в транзакции (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',)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...