相关疑难解决方法(0)

为什么SQLAlchemy count()比原始查询慢得多?

我正在使用带有MySQL数据库的SQLAlchemy,我想计算表中的行数(大约300k).SQLAlchemy 计数函数的运行时间大约是在MySQL中直接写入相同查询的50倍.难道我做错了什么?

# this takes over 3 seconds to return
session.query(Segment).count()
Run Code Online (Sandbox Code Playgroud)

然而:

SELECT COUNT(*) FROM segments;
+----------+
| COUNT(*) |
+----------+
|   281992 |
+----------+
1 row in set (0.07 sec)
Run Code Online (Sandbox Code Playgroud)

速度的差异随着桌子的大小而增加(在100k行下几乎不可察觉).

更新

使用session.query(Segment.id).count()而不是session.query(Segment).count()似乎做的伎俩,让它加快速度.我仍然感到困惑,为什么初始查询速度较慢.

mysql sqlalchemy

38
推荐指数
3
解决办法
4万
查看次数

在Flask-SQLAlchemy模型上查询函数使BaseQuery对象无法调用错误

我想查询两个日期之间的服务并总结他们的价格.当我尝试使用func.sumServices.query,我明白了TypeError: BaseQuery object is not callable.如何使用Flask-SQLAlchemy的函数进行查询?

Services.query(func.sum(Services.price)).filter(Services.dateAdd.between(start, end))
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy flask flask-sqlalchemy

11
推荐指数
1
解决办法
1万
查看次数

标签 统计

sqlalchemy ×2

flask ×1

flask-sqlalchemy ×1

mysql ×1

python ×1