From 2edf45b1b6d521f0d34e7fb9f0a2b85792c707a0 Mon Sep 17 00:00:00 2001 From: Simon Willison Date: Tue, 16 Jul 2024 14:20:54 -0700 Subject: [PATCH] Use isolation_level=IMMEDIATE, refs #2358 --- datasette/database.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/datasette/database.py b/datasette/database.py index ffe94ea7..71c134d1 100644 --- a/datasette/database.py +++ b/datasette/database.py @@ -85,12 +85,13 @@ class Database: return "db" def connect(self, write=False): + extra_kwargs = {} + if write: + extra_kwargs["isolation_level"] = "IMMEDIATE" if self.memory_name: uri = "file:{}?mode=memory&cache=shared".format(self.memory_name) conn = sqlite3.connect( - uri, - uri=True, - check_same_thread=False, + uri, uri=True, check_same_thread=False, **extra_kwargs ) if not write: conn.execute("PRAGMA query_only=1") @@ -111,7 +112,7 @@ class Database: if self.mode is not None: qs = f"?mode={self.mode}" conn = sqlite3.connect( - f"file:{self.path}{qs}", uri=True, check_same_thread=False + f"file:{self.path}{qs}", uri=True, check_same_thread=False, **extra_kwargs ) self._all_file_connections.append(conn) return conn