Skip to content

support sqlite .autocommit parameter (Python 3.12) #8795

@zzzeek

Description

@zzzeek

see python/cpython#93823.

change will be something equivalent towards:

diff --git a/lib/sqlalchemy/dialects/sqlite/pysqlite.py b/lib/sqlalchemy/dialects/sqlite/pysqlite.py
index 19949441fb..fe0627a1ab 100644
--- a/lib/sqlalchemy/dialects/sqlite/pysqlite.py
+++ b/lib/sqlalchemy/dialects/sqlite/pysqlite.py
@@ -531,11 +531,18 @@ class SQLiteDialect_pysqlite(SQLiteDialect):
     )
 
     def set_isolation_level(self, dbapi_connection, level):
-
         if level == "AUTOCOMMIT":
-            dbapi_connection.isolation_level = None
+            # support sqlite .autocommit feature
+            if hasattr(dbapi_connection, "autocommit"):
+                dbapi_connection.autocommit = True
+            else:
+                dbapi_connection.isolation_level = None
         else:
-            dbapi_connection.isolation_level = ""
+            # support sqlite .autocommit feature
+            if hasattr(dbapi_connection, "autocommit"):
+                dbapi_connection.autocommit = False
+            else:
+                dbapi_connection.isolation_level = ""
             return super(SQLiteDialect_pysqlite, self).set_isolation_level(
                 dbapi_connection, level
             )

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions