如何使用SqlAlchemy通过id查询数据库?

70 python sql model sqlalchemy

我需要通过id类似的东西查询SQLAlchemy数据库

User.query.filter_by(用户名= '彼得')

但对于身份证.我该怎么做呢?[搜索Google和SO没有帮助]

Mar*_*eth 97

Query有一个get函数,支持按ID查询.

例如,要查询ID为23的对象: id

  • Get函数还支持多个主键:`YourModel.query.get((pk1,pk2))`.**注意元组.** (6认同)
  • 由于 Query.get() 自 1.4 起已被弃用 - 替换是 `session.get(User, 5)` 吗? (5认同)
  • get()函数通过主键查询对象。如果要通过“ id”查询,则应首先将“ id”设置为主键。 (2认同)

小智 34

您可以像这样查询id = 1的用户

session.query(User).get(1)


pan*_*912 5

有时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')>
Run Code Online (Sandbox Code Playgroud)

如果您正在进行事务处理(get()将在不查询数据库的情况下为您提供结果对象在内存中):

>>> session.query(User).get(1)
<User(u'ed', u'Ed Jones')>
Run Code Online (Sandbox Code Playgroud)

最好使用这个:

>>> 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',)
Run Code Online (Sandbox Code Playgroud)