# ============================================================ # config.py — Configuration & connexion SQL Server # Data Sentinel | COYAUD Anthony | 2026 # ============================================================ import pyodbc from contextlib import contextmanager class Config: # Chaîne de connexion SQL Server DB_CONNECTION_STRING = ( "Driver={ODBC Driver 17 for SQL Server};" "Server=LaptopCA\\SQLEXPRESS;" "Database=DataSentinel;" "Trusted_Connection=yes;" ) # Paramètres API API_TITLE = "Data Sentinel API" API_VERSION = "1.0.0" API_DESCRIPTION = "API de monitoring de la qualité des données — XEFI" # Sécurité JWT SECRET_KEY = "data-sentinel-secret-change-in-prod" ALGORITHM = "HS256" TOKEN_EXPIRE_MINUTES = 60 # ---------------------------------------------------------------- # Connexion — retourne un curseur pyodbc via context manager # ---------------------------------------------------------------- def get_connection() -> pyodbc.Connection: """Ouvre une connexion SQL Server et la retourne.""" return pyodbc.connect(Config.DB_CONNECTION_STRING) @contextmanager def get_cursor(): """ Context manager : ouvre connexion + curseur, commit ou rollback, ferme proprement. Usage : with get_cursor() as cursor: cursor.execute("SELECT ...") rows = cursor.fetchall() """ conn = get_connection() cursor = conn.cursor() try: yield cursor conn.commit() except Exception: conn.rollback() raise finally: cursor.close() conn.close()