2016-05-10 25 views

回答

2

Jwodder的答案,事實上,返回第一個結果是標量,但SQLAlchemy提供了其他一些函數,可以更好地滿足您的需求,所以我哈哈已經列出並解釋了他們的所有主題:

first()將拉出返回的第一行,或者None如果沒有行返回。

one()將拉動1行,但必須只能拉動一列:它會出錯誤,如果您的查詢返回的行數不爲1

one_or_none()將主要做one(),但不是示數如果沒有行返回,則返回None。如果返回多個行,這仍然會出錯。

所有這些文檔可以在這裏找到:http://docs.sqlalchemy.org/en/latest/orm/query.html

3

first()

first()適用一個的限制,返回的第一個結果是一個標量

這樣:

thing = thing.query.filter_by(id=thing_id).first() 
2

首先,同意並支持其他的答案。

但是,看起來您的查詢是針對primary key列的。如果是這樣的情況下,作出這樣的查詢的最直接的方法是簡單地調用get()

thing = Thing.query.get(thing_id) 
+0

不錯!我真的想這樣做:'Thing.query.with_entities(Thing.foo).filter_by(id = thing_id).limit(1).all()。[0]',這似乎不可能與'.get ()' –

+1

的確,'get'只能用於對象本身,只能用於主鍵。 – van