簡體   English   中英

如何調用限制為 1 的 SQLAlchemy 查詢?

[英]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)情況下感覺有點混亂和多余。 是否有更簡潔(和/或其他最佳)的方法來實現這一目標?

first()

first()應用一個限制,並將第一個結果作為標量返回

從而:

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

的確,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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM