Repository navigation
Changed
- The implementation is split into private modules by concern (
_retry,_connections,_stats,_sql,_errors,_database,_single_table). The public API is unchanged andfrom msqlite.msqlite import ...still works.BEGIN, single statements andCOMMITnow go through one retry loop (LockRetrier) over a pureRetryPolicy;Transaction.execute,executemanyandexecutescriptshare one timed cursor path. - Log records go to the
msqlitelogger. They used to go tomsqlite.msqlite, a child of it, so a handler or level onmsqlitealready received them; only a filter on the exact old name needs updating.
Fixed
- Lock-error detection assumed every
sqlite3.OperationalErrorcarriessqlite_errorcode. One constructed in Python rather than raised by the engine has no such attribute, so the documented message fallback raisedAttributeErrorinstead of running. Found by the new unit test for the fallback. pragmas=("PRAGMA",)(the prefix with nothing after it) was accepted and failed later when the connection opened; it is now rejected up front like an empty pragma.
Full changelog: https://github.com/jamesabel/msqlite/blob/main/CHANGELOG.md