[英]How can I invoke an SQLAlchemy query with limit of 1?
我有這樣的代碼:
thing = thing.query.filter_by(id=thing_id).limit(1).all()[0]
all()[0]
在limit(1)
情況下感覺有點混亂和多余。 是否有更簡潔(和/或其他最佳)的方法來實現這一目標?
的確,Jwodder的答案將以標量形式返回第一個結果,但是SQLAlchemy提供了其他兩個更適合您需要的函數,因此,我列出並解釋了所有這些函數:
first()
將拉出返回的第一行;如果不返回任何行,則返回None
。
one()
將拉出1行,但必須僅拉出一行:如果從查詢返回的行數不是1,它將出錯。
one_or_none()
本質上將執行one()
,但是如果沒有返回任何行,則不會出錯,將返回None
。 如果返回多行,仍然會出錯。
所有這些文檔都可以在以下位置找到: http : //docs.sqlalchemy.org/en/latest/orm/query.html
首先,同意並支持其他答案。
但是,您的查詢似乎是針對primary key
列的。 如果是這種情況,進行這種查詢的最直接方法就是簡單地調用get()
:
thing = Thing.query.get(thing_id)
SQLAlchemy 核心為查詢提供了一個.limit(1) 運算符。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.