Files
Zilant2025/evt_prefetch.py
T
gitadmin 69bf49f3a9
ci/woodpecker/push/woodpecker Pipeline was successful
убрать проверку времени в evt_prefetch
2025-10-12 12:59:24 +03:00

72 lines
2.2 KiB
Python

import os
import mysql.connector
from mysql.connector import Error
from datetime import datetime, timezone
from dotenv import load_dotenv
# Загрузка переменных окружения
load_dotenv()
MDB_HOST = os.getenv('MDB_HOST')
MDB_USER = os.getenv('MDB_USER')
MDB_PW = os.getenv('MDB_PW')
MDBASE = os.getenv('MDBASE')
def prefetch_all_events():
"""
Проверяет записи в таблице events и устанавливает флаг marked_to_publication
для записей, которые:
- имеют флаг is_visible = 1
- не имеют флага marked_to_publication = 1
"""
try:
# Подключение к базе данных
connection = mysql.connector.connect(
host=MDB_HOST,
user=MDB_USER,
password=MDB_PW,
database=MDBASE
)
# Установка временной зоны соединения в UTC
cursor_temp = connection.cursor()
cursor_temp.execute("SET time_zone = '+00:00'")
cursor_temp.close()
cursor = connection.cursor()
# SQL запрос для обновления записей
update_query = """
UPDATE events
SET marked_to_publication = 1
WHERE is_visible = 1
AND marked_to_publication = 0
"""
# Выполнение запроса
cursor.execute(update_query)
updated_count = cursor.rowcount
# Фиксация изменений
connection.commit()
print(f"Обновлено записей: {updated_count}")
return updated_count
except Error as e:
print(f"Ошибка базы данных: {e}")
if 'connection' in locals() and connection.is_connected():
connection.rollback()
return 0
except Exception as e:
print(f"Общая ошибка: {e}")
return 0
finally:
if 'connection' in locals() and connection.is_connected():
cursor.close()
connection.close()
if __name__ == "__main__":
prefetch_all_events()