Size: a a a

2021 March 24

r

r in Python Flask
Archie Ruin
Привет, хэлпаните плиз.
Есть запрос:
alerts_db: List[AlertModel] = db.session.query(AlertModel).filter(AlertModel.timestamp >= start_datetime, AlertModel.timestamp <= end_datetime).all()
Даёт результат, который на скрине, как можно исключить повторения, на пример на Один Reason все IP, тоже без повторений?
Насколько я тебя понял, просто укажи в запросе ещё ip
источник

r

r in Python Flask
Но мне кажется ты не это спрашивал
источник

r

r in Python Flask
В общем, давай подробнее
источник

r

r in Python Flask
Если хочешь получить все ip без повторений, то есть group_by()
источник

r

r in Python Flask
Или как там в алхимии
источник

r

r in Python Flask
Если это алхимия
источник

AR

Archie Ruin in Python Flask
r
Если это алхимия
+
источник

AR

Archie Ruin in Python Flask
r
Если хочешь получить все ip без повторений, то есть group_by()
attackers_by_reason_db: List[AlertModel] = db.session.query(AlertModel).filter(
       AlertModel.timestamp >= start_datetime, AlertModel.timestamp <= end_datetime
   ).group_by(AlertModel.id, AlertModel.source_ip).order_by(AlertModel.reason).distinct().all()
источник

AR

Archie Ruin in Python Flask
Вот так сейчас выглядит мой запрос
источник

AR

Archie Ruin in Python Flask
Результат
источник

r

r in Python Flask
Archie Ruin
Результат
А нужно что
источник

AR

Archie Ruin in Python Flask
Чтоб было без повторений
источник

AR

Archie Ruin in Python Flask
Хотябы по одному полю
источник

r

r in Python Flask
Archie Ruin
Чтоб было без повторений
То есть оставить просто список IP?
источник

r

r in Python Flask
Ну там IP + рандомная причина
источник

AR

Archie Ruin in Python Flask
r
То есть оставить просто список IP?
Да, или Reason
источник

r

r in Python Flask
GROUP BY должен справляться
источник

AR

Archie Ruin in Python Flask
Хотя не, IP, ты прав
источник

r

r in Python Flask
Зачем указал ID в GROUP BY?
источник

AR

Archie Ruin in Python Flask
r
Зачем указал ID в GROUP BY?
Если без него:
sqlalchemy.exc.ProgrammingError: (psycopg2.errors.GroupingError) column "alerts.id" must appear in the GROUP BY clause or be used in an aggregate function
LINE 2: FROM (SELECT DISTINCT alerts.id AS alerts_id, alerts.alert_i...
источник