Как мне преобразовать это в пиуи

У меня есть этот SQL-запрос, и я сейчас выполняю его в 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

person Stupid.Fat.Cat    schedule 17.09.2015    source источник


Ответы (2)


Другим вариантом было бы написать:

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?

person coleifer    schedule 24.09.2015

Решение состояло в том, чтобы урезать.

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))
person Stupid.Fat.Cat    schedule 17.09.2015