Python 3.x 当没有指定模型时,如何使用SQLAlchemy计算查询中的行数?

Python 3.x 当没有指定模型时,如何使用SQLAlchemy计算查询中的行数?,python-3.x,count,sqlalchemy,Python 3.x,Count,Sqlalchemy,我正在寻找一种使用SQLAlchemy计算从给定查询(可能包括过滤器)返回的行数的方法,但我在网上找到的所有内容都显式地使用了模型(示例)。我的问题是我没有模型,我只有一个表对象(因为我处理的是格式不时变化的临时表)。目前,我可以做到以下几点: tbl = Table(mytablename,metadata,autoload=True, autoload_with=myengine, schema=myschemaname) query = select([tbl]) filters = b

我正在寻找一种使用SQLAlchemy计算从给定查询(可能包括过滤器)返回的行数的方法,但我在网上找到的所有内容都显式地使用了模型(示例)。我的问题是我没有模型,我只有一个表对象(因为我处理的是格式不时变化的临时表)。目前,我可以做到以下几点:

tbl = Table(mytablename,metadata,autoload=True, autoload_with=myengine, schema=myschemaname)
query = select([tbl]) 
filters = build_filters(...) #my function that build filters
query = query.where(and_(*filters))
conn = myengine.connect()
ResultProxy = conn.execute(query)
totalCount = len(ResultProxy.fetchall())

但是效率很低。有没有一种方法可以在不参考任何模型的情况下高效地进行计数?

尝试记录的SQLAlchemy核心“计数”函数。我相信你可以像现在这样把你的过滤器连在上面。所以,(这里不保证我的语法,但这里有一些东西让你开始)


根据文档,我相信这实际上会从数据库生成一个SELECT COUNT,而不是从数据库返回所有行,然后对它们进行计数。

您是否希望执行SELECT COUNT(*)在mytablename上,而不实际查询所有记录?我想计算表上查询返回的行数是,但该查询可以包括筛选器。例如,我想从mytable中选择count(*),其中温度>80,城市=达拉斯,但我不确定是否理解。你是说“计数”而不是“总和”吗?你能举个例子吗?我知道如何在我的表(query=select([func.count()])上进行计数。从(tbl)中选择_),但不在我的筛选查询上进行计数。很抱歉,Patrick,是的,我指的是计数。我会修改我的答案来证明这一点。不客气,帕特里克。谢谢你给我这个机会帮助我!实际上,最后一行应该是:totalCount=ResultProxy.fetchone()[0]
query = select([func.count()]).select_from(my_table).where(and_(*filters))
conn = myengine.connect()
ResultProxy = conn.execute(query)
totalCount = ResultProxy.fetchone()[0]