我如何将其转换为peewee

时间:2015-09-17 22:48:20

标签: python peewee

我有这个SQLquery,我现在正在像peewee那样执行它

sql = "select DATE(inserted) Date, COUNT(*) totalCount FROM tbl_rss_region GROUP BY DATE(inserted)"

db.execute_sql(sql)

是否可以像db.select(DATE(tbl_rss_region.inserted)....)语句一样写出来?

我试过这个,但它没有按日期对它们进行分组,也考虑到时间,所以它给我错误的值:

for l in TBL_RSS_REGION.select(TBL_RSS_REGION.inserted, fn.COUNT(TBL_RSS_REGION.id).alias("count")).group_by(TBL_RSS_REGION.inserted):
    print l.inserted, l.count

2015-08-31 09:31:33.530000 1
2015-08-31 09:31:33.538000 1
2015-08-31 09:31:33.549000 1
2015-08-31 09:31:33.561000 1
2015-08-31 09:31:33.569000 1

2 个答案:

答案 0 :(得分:0)

解决方案是截断。

TBL_RSS_REGION.select(db.truncate_date("day", TBL_RSS_REGION.inserted), fn.COUNT(TBL_RSS_REGION.id).alias("count")).group_by(
            db.truncate_date("day", TBL_RSS_REGION.inserted))

答案 1 :(得分:0)

另一种选择是写:

TRS = TBL_RSS_REGION  # ew all caps, wtf bro
query = (TRS
         .select(
             fn.DATE(TRS.inserted).alias('day'),
             fn.COUNT(TRS.id).alias('count'))
         .group_by(fn.DATE(TRS.inserted)))

您使用了fn.COUNT,或许您不知道可以将它与任意SQL函数一起使用?