""" save_keywords.py ================ Чете keywords_changes.json (генериран от браузъра) и записва промените в SQL Server. Стартирай с: python save_keywords.py """ import os, sys, json from pathlib import Path from datetime import datetime try: import pyodbc except ImportError: sys.exit("Инсталирай pyodbc: pip install pyodbc") CONN_STR = os.getenv( "HELP_DB_CONN", "DRIVER={ODBC Driver 18 for SQL Server};" "TrustServerCertificate=yes;" "SERVER=94.26.63.238,13151;DATABASE=blondina;" "UID=blondina_login;PWD=blondina_parola_123" ) CHANGES_FILE = Path(__file__).parent / "keywords_changes.json" def main(): if not CHANGES_FILE.exists(): print("Файлът keywords_changes.json не е намерен.") print("Запази промените от браузъра първо.") return changes = json.loads(CHANGES_FILE.read_text(encoding="utf-8")) if not changes: print("Няма промени за запис.") return print(f"Записвам {len(changes)} промени в БД...") conn = pyodbc.connect(CONN_STR, autocommit=False) cur = conn.cursor() ok, err = 0, 0 for item in changes: code = item.get("code", "").strip() keywords = item.get("keywords", "").strip() if not code: continue try: cur.execute( "UPDATE RIP_help_sections SET keywords=?, updated_at=GETDATE() WHERE code=?", keywords, code ) if cur.rowcount > 0: ok += 1 print(f" ✓ {code}") else: print(f" ? {code} — не е намерен в БД") except Exception as e: print(f" ✗ {code} — {e}") err += 1 conn.commit() conn.close() print(f"\nГотово: {ok} записани, {err} грешки.") # Архивираме файла ts = datetime.now().strftime("%Y%m%d_%H%M%S") archive = CHANGES_FILE.parent / f"keywords_changes_{ts}.json" CHANGES_FILE.rename(archive) print(f"Файлът е архивиран като: {archive.name}") if __name__ == "__main__": main()