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()