このグループ化/順序付けは機能しません。ポイントは、HTTP.statusline
分を数えてから返すことです。今では、複数の時間を返します。データベースでは、日付は文字列として保存されます。
出力例:
{u'date': u'2013-03-12 11:23:48', u'count': 21}
しかし、何かが次のように複数の値を返しています:
{u'date': u'2013-03-12 11:36:21', u'count': 2}, {u'date': u'2013-03-12 11:36:21', u'count': 8}]
コード:
def statusline_date(status):
session = load_session()
now = datetime.datetime.now()
DD = now - datetime.timedelta(minutes=60)
DD = DD.strftime('%Y-%m-%d %H:%M:%S')
#query = session.query(HTTP.date, extract('minute', HTTP.date).label('min'), HTTP.statusline, func.count(HTTP.statusline).
# label('count')).filter(HTTP.statusline.like('%'+status+'%'), HTTP.date>=(DD+'%')).group_by('min').all()
query = session.query(HTTP.date, HTTP.statusline, func.count(HTTP.statusline).
label('count')).filter(HTTP.statusline.like('%'+status+'%'), HTTP.date>=(DD)).group_by(HTTP.date, HTTP.statusline).order_by(asc(HTTP.date)).all()
result = [{'date': t.date, 'count': t.count} for t in query]
return result