我有一个User
模型,主键user_id
和一个独特的username
。如果我知道user_id
,我使用session.query(User).get(user_id)
。什么是该属性不是主键时的等效查询,如session.query(User).get(username=username)
?什么是通过非主键属性查询的惯用方式?
session.query(User).filter_by(username=username).first()
如果找不到行,还会返回None
,但并未明确说明该查询永远不会有多于一行。
我写了下面的内容,但是这是任何人经常在代码中作为助手实现的东西吗?
try:
user = session.query(User).filter_by(username=username).one()
except (NoResultFound, MultipleResultsFound):
user = None
不,你的回答没有帮助@davidism。你改变了我的问题以符合你的答案。我并不是在寻找一种“便捷的方式来实现这个”,我已经为你编辑过的东西提供了一个解决方案。我要求的是在这种情况下的常见做法。 – Oin
我认为你需要解释为什么你需要明确说明不能有多行。明确给谁? –
@Oin我更新了我的答案,希望能够回答你的直接问题,请澄清你的问题,如果这不是你问的问题。 – davidism