1.2 KiB
1.2 KiB
async_msssql_query.py
Scopo
Questo modulo centralizza la costruzione del DSN SQL Server e l'accesso
asincrono al database tramite AsyncMSSQLClient.
Flusso di utilizzo
flowchart TD
A["main.py o modulo chiamante"] --> B["make_mssql_dsn(...)"]
B --> C["Crea stringa mssql+aioodbc"]
C --> D["AsyncMSSQLClient(dsn)"]
D --> E["query_json(...) o exec(...)"]
E --> F["_ensure_engine()"]
F --> G{"Engine gia creato?"}
G -- No --> H["create_async_engine(..., NullPool, loop corrente)"]
G -- Si --> I["Riusa engine esistente"]
H --> J["execute(text(sql), params)"]
I --> J
J --> K["Normalizza rows/columns"]
K --> L["Ritorna payload JSON-friendly"]
Schema di chiamata
flowchart LR
DSN["make_mssql_dsn"] --> Client["AsyncMSSQLClient.__init__"]
Client --> Ensure["_ensure_engine"]
Ensure --> Query["query_json"]
Ensure --> Exec["exec"]
Client --> Dispose["dispose"]
Note
NullPoolevita problemi di riuso connessioni tra loop diversi.- L'engine viene creato solo al primo utilizzo reale.
query_json()restituisce un formato gia pronto per le callback GUI.