如何使用模型在查询中指定我想要的列(默认选择所有列)?我知道如何使用sqlalchmey会话:session.query(self.col1)但是我如何使用模型?我做不到SomeModel.query().有办法吗?
我正在使用带有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()似乎做的伎俩,让它加快速度.我仍然感到困惑,为什么初始查询速度较慢.