Форум программистов, компьютерный форум, киберфорум
Python: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 01.03.2021
Сообщений: 4

Как сделать постоянное получение данных из обновляющейся SQL таблицы используя pymysql

21.05.2023, 23:36. Показов 830. Ответов 6

Студворк — интернет-сервис помощи студентам
Надо написать код для получения alert'ов и реакции на них. Имею на данный момент такой:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import pymysql
import time
import os
 
# Устанавливаем соединение с базой данных
connection = pymysql.connect(host="localhost",
                             port=3306,
                             user="root",
                             passwd="root",
                             database="ossec")
 
# Создаем курсор
cursor = connection.cursor()
 
# Запрос на выборку значений столбцов из таблицы
query = "SELECT timestamp, rule_id, full_log  FROM alert ORDER BY id DESC LIMIT 25;"
 
# Бесконечный цикл
while True:
    try:
        # Выполняем запрос SQL
        cursor.execute(query)
 
        # Получаем результаты запроса
        results = cursor.fetchall()
 
        # Выводим результаты
        for row in results:
            timestamp_value = row[0]
            rule_id_value = row[1]
            full_log_value = row[2]
 
            if 53599 < rule_id_value < 53605:
                print(full_log_value)
                
 
 
    except KeyboardInterrupt:
        break
 
 
# Закрываем соединение с базой данных
connection.close()
Но в данном случае программа реагирует на изменения ТОЛЬКО после ее перезапуска, писать connection отдельно в try пытался, не помогает. Что делать? Как реализовать постоянную подгрузку изменений?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
21.05.2023, 23:36
Ответы с готовыми решениями:

Как сделать, чтобы в схеме данных в SQL Server отображались типы данных у каждого поля таблицы?
Как сделать, чтобы схема со 2 картинки стала похожей на 1 картинку?

Как сделать вывод данных с MS sql server таблицы в TextBox?
нужно чтобы данные запроса select sql таблицы (ms sql server) типа int (одно число) вывелись в textBox. Как это сделать? Или лучше вместо...

SQLite. Как из двух записей в базе данных сделать третью, используя только SQL?
Есть Два поля: Индекс и Дата, оба хранятся как varchar(50), оба не равны нулю какой должен быть запрос, чтобы при занесении в таблицу...

6
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,664
Записей в блоге: 29
22.05.2023, 07:48
Kalix, а кто делает эти изменения? не вариант заставить его уведомлять текуший сервис\класс о изменениях? зачем в БД то постоянно лезть?
0
0 / 0 / 0
Регистрация: 01.03.2021
Сообщений: 4
22.05.2023, 07:54  [ТС]
Изменения вносит система обнаружения вторжений. "Не вариант заставить его уведомлять текуший сервис\класс о изменениях?" - к сожалению, нет. Нет такой функции. Поэтому надо как-то сделать регулярное обновление
0
Автоматизируй это!
Эксперт Python
 Аватар для Welemir1
7390 / 4817 / 1246
Регистрация: 30.03.2015
Сообщений: 13,664
Записей в блоге: 29
22.05.2023, 08:23
Цитата Сообщение от Kalix Посмотреть сообщение
система обнаружения вторжений

если она обнаружила вторжение то должна заорать так что не пропустит и глухой, а если не обнаружила то зачем отслеживать ее записи?))

1) как часто могут данные появляться? я к тому что стоит ли безостановочно долбить БД или можно раз в 15 минут запросить?
2) я не в курсе но погуглил бы нет ли уже у БД такой возможности встроенной типа получения таймстемпа изменения таблицы, чтобы не лезть внутрь нее а сначала узнать -менялась ли она вообще.
0
0 / 0 / 0
Регистрация: 01.03.2021
Сообщений: 4
22.05.2023, 08:33  [ТС]
Я хочу реализовать действие на вывод уведомления о подключении USB устройства, поэтому мне надо реагировать максимально быстро => надо получать все изменения максимально быстро. А реализовать это можно только постоянно получая обновления в таблице
0
 Аватар для kazak
3601 / 2742 / 355
Регистрация: 11.03.2009
Сообщений: 6,300
22.05.2023, 11:44
В большинстве промышленных БД есть такая штука как триггер, создается на вставку, апдейт или удаление данных, соответственно выполняющий некоторый код перед этими действиями. Так же в большинстве БД есть возможность общаться с внешним миром, допустим посредством rest api. У некоторых БД такая возможность идет из коробки, для некоторых придется установить доп.модули.

Как вариант создаете триггер допустим на вставку, посылающую апи запрос на сервер, и создаете простенький сервер обрабатывающий эти запросы.
2
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
25.05.2023, 17:50
Цитата Сообщение от Welemir1 Посмотреть сообщение
нет ли уже у БД такой возможности встроенной типа получения таймстемпа изменения таблицы, чтобы не лезть внутрь нее а сначала узнать -менялась ли она вообще.
С этим интересно, так как в общем случае СУБД даже не знает точное количество строк в конкретной таблице, как и вряд ли ведёт статистику последнего изменения таблицы. Потому что опять же может быть множество транзакций, как только читающих, так и пишущих, и за-за уровня изолированности читающие транзакции должны читать фиксированный набор строк, который БЫЛ НА МОМЕНТ СТАРТА читающей транзакции и не видеть НЕЗАФИКСИРОВАННЫЕ ИЗМЕНЕНИЯ. Напротив, пишущая транзакция (не не зафиксированная) должна видеть собственные изменённые строки. Как поняли, там всё сложно, потому что появляется многоверсионность одних и тех же данных. А если часть транзакция будут откачены, это будет считаться изменением в таблице? Или, например, в postgress ЧИТАЮЩАЯ транзакция SELECT может стать причиной, когда помеченная к удалению версия строки будет удалена физически из страницы (в страницу влезает 4-5 строк).

Выше kazak предложил решение на триггерах - пусть СУБД сама дёргает внешние системы или хотя бы копирует важные алерты в другую таблицу.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
25.05.2023, 17:50
Помогаю со студенческими работами здесь

Экспорт данных из запроса или таблицы используя джоб MS SQL в Excel
Добрый день. Никак не могу сделать авто-выгрузку в файлы эксель из SQL. Запрос select * from sumary_table Сама...

Как выглядит SQL запрос на получение первичного ключа с таблицы
Подскажите пожалуйста,как выглядит SQL запрос на получение первичного ключа таблицы c SQL Server

Как сделать запрос sql, используя данные из массива?
Здравствуйте. Подскажите. на выходе скрипта получаю массив massiv со значениями : знач1, знач2, знач3, ..., значN и имею sql...

Запрос на получение таблицы с получением данных по полю из другой таблицы
Есть таблица &quot;messages&quot; с полями id, id_bid, id_user, date_msg, msg Нужно по id_user получить имя пользователя из таблицы...

Как сделать связь 1 к 1 при создании таблицы через sql?
Без SQL как сделать связь 1 к 1 я знаю, но как сделать это через SQL? К примеру, есть таблица Продажи и Доставка и нужно между ними сделать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Новые блоги и статьи
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка. Рецензия / Мнение/ Перевод Сайт называется reddit: The Thinkpad X220 Tablet is the best budget school laptop period. Это. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru