python-SQLAlchemy按分钟分组
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python-SQLAlchemy按分钟分组,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1473字,纯文字阅读大概需要3分钟。
内容图文
任务是将日期时间值(使用SQLAlchemy)分组为每分钟点数(按分钟分组).
我有一个自定义SQL查询:
SELECT COUNT(*) AS point_value, MAX(time) as time
FROM `Downloads`
LEFT JOIN Mirror ON Downloads.mirror = Mirror.id
WHERE Mirror.domain_name = 'localhost.local'
AND `time` BETWEEN '2012-06-30 00:29:00' AND '2012-07-01 00:29:00'
GROUP BY DAYOFYEAR( time ) , ( 60 * HOUR( time ) + MINUTE(time ))
ORDER BY time ASC
它工作得很好,但是现在我已经在SQLAlchemy中做到了.这是我现在所拥有的(按年分组只是一个示例):
rows = (DBSession.query(func.count(Download.id), func.max(Download.time)).
filter(Download.time >= fromInterval).
filter(Download.time <= untilInterval).
join(Mirror,Download.mirror==Mirror.id).
group_by(func.year(Download.time)).
order_by(Download.time)
)
它给了我这个SQL:
SELECT count("Downloads".id) AS count_1, max("Downloads".time) AS max_1
FROM "Downloads" JOIN "Mirror" ON "Downloads".mirror = "Mirror".id
WHERE "Downloads".time >= :time_1 AND "Downloads".time <= :time_2
GROUP BY year("Downloads".time)
ORDER BY "Downloads".time
如您所见,它仅缺少正确的分组:
GROUP BY DAYOFYEAR( time ) , ( 60 * HOUR( time ) + MINUTE(time ))
SQLAlchemy是否有一些功能可以按分钟分组?
解决方法:
您可以通过Functions来使用SA中的任何SQL辅助函数,而您已经在YEAR部分使用了该函数.我认为在您的情况下,您只需要添加(未经测试):
from sqlalchemy.sql import func
...
# add another group_by to your existing query:
rows = ...
group_by(func.year(Download.time),
60 * func.HOUR(Download.time) + func.MINUTE(Download.time)
)
内容总结
以上是互联网集市为您收集整理的python-SQLAlchemy按分钟分组全部内容,希望文章能够帮你解决python-SQLAlchemy按分钟分组所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。