[英]SQLalchemy filter query only returning first row
我遇到了 SQLalchemy 查詢的問題。 當我查詢一個特定的表時,它返回 7 個項目,但是當我遍歷它時,它只找到一個項目。
這是查詢;
seasons = db.session.query(Seasons).filter(Seasons.tmdb_id == tmdb_id)
我知道它返回 7 個項目,因為我立即鍵入以下內容並打印數字“7”;
print(seasons.count())
但是,當我嘗試像這樣遍歷本季 object 並期望獲得 7 個名字時,我只得到一行和一個名字。
for item in seasons:
print(item.name)
這是我的 models.py 中的 Seasons class
# Main TV show table
class Seasons(db.Model):
__tablename__ = 'tv_seasons'
tmdb_id = db.Column(db.Integer, primary_key=True)
season_id = db.Column(db.Integer)
air_date = db.Column(db.String)
name = db.Column(db.String)
episode_count = db.Column(db.Integer)
overview = db.Column(db.String)
poster_path = db.Column(db.String)
season_number = db.Column(db.Integer)
知道為什么會這樣嗎?
因為count()
function 返回一個 int 值。 看一看: https://docs.sqlalchemy.org/en/14/orm/query.html#sqlalchemy.orm.Query.count
SELECT count(1) AS count_1 FROM (
SELECT <rest of query follows...>
) AS anon_1
上面的SQL返回單行,是計數function的聚合值; Query.count() 方法然后返回單個 integer 值。
因此,您應該使用Query(...).all()
來迭代項目。
然后使用if
檢查是否有數據:
seasons = query(...).all()
if seasons:
for item in seasons:
print(item.name)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.