我有這樣的代碼:如何調用限制爲1的SQLAlchemy查詢?
thing = thing.query.filter_by(id=thing_id).limit(1).all()[0]
all()[0]
感覺在limit(1)
情況有點凌亂和冗餘。是否有更簡潔(和/或其他方式)來實現這一目標?
我有這樣的代碼:如何調用限制爲1的SQLAlchemy查詢?
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)
不錯!我真的想這樣做:'Thing.query.with_entities(Thing.foo).filter_by(id = thing_id).limit(1).all()。[0]',這似乎不可能與'.get ()' –
的確,'get'只能用於對象本身,只能用於主鍵。 – van