Это мой код для SqlAlChemy после привязки его к базе данных. Я пытаюсь напечатать верхний IP-адрес за 2017 год. Однако я не смог распечатать свои результаты.
from sqlalchemy import select, func, and_, desc
import math
Top2017 = session.query(Log.IP,func.count(Log.IP).label('count')).filter(and_(Log.date >= '2017-1-1',Log.date <= '2017-12-31')).group_by(Log.IP).order_by(desc('count'))
print("The Top IP Address is ")
print("Year" , "IP Address")
for q in Top2017.limit(3):
print("2017", q)
Мой вывод:
The Top IP Address is
Year IP Address
2020-03-06 10:21:03,811 INFO sqlalchemy.engine.base.Engine SELECT logfile."IP" AS "logfile_IP", count(logfile."IP") AS count
FROM logfile
WHERE logfile.date >= ? AND logfile.date <= ? GROUP BY logfile."IP" ORDER BY count DESC
LIMIT ? OFFSET ?
2020-03-06 10:21:03,812 INFO sqlalchemy.engine.base.Engine ('2017-1-1', '2017-12-31', 3, 0)
2017 ('10.131.0.1', 1921)
2017 ('10.130.2.1', 1805)
2017 ('10.128.2.1', 1667)
Вывод очень грязный, так как результат не очень ясен со всеми напечатанными запросами. Следовательно, мой желаемый результат будет:
The Top IP Address is
Year IP Address Count
2017 10.131.0.1 1921
2017 10.130.2.1 1805
2017 10.128.2.1 1667
Спасибо за вашу помощь.
Это вывод для dict.
The Top IP Address is
Year IP Address Count
OrderedDict([('10.131.0.1', 1921), ('10.130.2.1', 1805), ('10.128.2.1', 1667)])