724594d3f193ec3eeba6b2df9c89389ff3fce239
- Declare `password` as a proper dataclass field (repr=False) so it is visible to type checkers and any code path that constructs a bare ConnectionProfile; drop the now-unused Optional import. - Fix _conn_str() fallback loop: the return was inside the for-body, so only ODBC Driver 18 was ever tried. Now uses pyodbc.drivers() to pick the first installed driver from the preference list. - Make _cur() a thread-safe @contextmanager that holds self._lock for the cursor's lifetime, matching MySQL/PostgreSQL/SQLite. Updated all 16 call sites to `with self._cur() as c:`. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Description
DB Client application
175 KiB
Languages
Python
100%