如何获取 `<class 'flask_sqlalchemy.BaseQuery'>` 的列表值?

How to get a list value of `<class 'flask_sqlalchemy.BaseQuery'>`?

我使用下面的 flask 代码

test_flag = db.session.query(TestTable.flag).distinct()

是SQL,共[SQL: SELECT DISTINCT test_table.flag AS test_table_flag FROM test_table


flag
1
2
3

如何获取db.session.query(TestTable.flag).distinct()的列表值?

我需要这样的输出[1,2,3],我想做的是确保2是否在[1,2,3]

您可以使用它来生成您的 flags

列表
flag_list = [each.flag for each in db.session.query(TestTable.flag).distinct()]

然后你可以使用下面的命令来确定2是否存在于flag_list中。如果它确实存在那么它将 return True 否则 False

2 in flag_list 

您可以在数据库端检查值,而不必检索所有不同的值。如果您不需要 Python 级别的所有值,或者如果 table.

中有很多行,这可能会更有效
# Assuming there are rows containing 1, 2 and 3.

flags = db.session.query(True).filter(db.exists().where(TestTable.flag == 2)).scalar()

flags = db.session.query(True).filter(db.exists().where(TestTable.flag == 4)).scalar()

第一个查询将 return True,第二个将 return None.

类似地,您可以查询具有所需值的行数以查看是否存在,但 exists 构造更有效,因为它会在找到与过滤器匹配的第一个值后停止搜索.