From 55047db79851c45be935790988f00b87c9f9ef2b Mon Sep 17 00:00:00 2001 From: Simon Willison Date: Wed, 7 May 2025 17:08:49 -0700 Subject: [PATCH] supports_strict now caches on self._supports_strict --- sqlite_utils/db.py | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/sqlite_utils/db.py b/sqlite_utils/db.py index 144330a..927e6c6 100644 --- a/sqlite_utils/db.py +++ b/sqlite_utils/db.py @@ -671,16 +671,18 @@ class Database: @property def supports_strict(self) -> bool: "Does this database support STRICT mode?" - try: - table_name = "t{}".format(secrets.token_hex(16)) - with self.conn: - self.conn.execute( - "create table {} (name text) strict".format(table_name) - ) - self.conn.execute("drop table {}".format(table_name)) - return True - except Exception: - return False + if not hasattr(self, "_supports_strict"): + try: + table_name = "t{}".format(secrets.token_hex(16)) + with self.conn: + self.conn.execute( + "create table {} (name text) strict".format(table_name) + ) + self.conn.execute("drop table {}".format(table_name)) + self._supports_strict = True + except Exception: + self._supports_strict = False + return self._supports_strict @property def sqlite_version(self) -> Tuple[int, ...]: