From 1879aaf3733c4938f75320395b8faa08fa4fec09 Mon Sep 17 00:00:00 2001 From: Federico Caselli Date: Mon, 27 Feb 2023 22:05:08 +0100 Subject: Restore connectivity with ancient sqlite Fixed bug that prevented SQLAlchemy to connect when using a very old sqlite version (before 3.9) on python 3.8+. Fixes: #9379 Change-Id: I10ca347398221c952e1a572dc6ef80e491d1f5cf --- lib/sqlalchemy/dialects/sqlite/pysqlite.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'lib/sqlalchemy/dialects/sqlite') diff --git a/lib/sqlalchemy/dialects/sqlite/pysqlite.py b/lib/sqlalchemy/dialects/sqlite/pysqlite.py index 294eddaff..a40e3d256 100644 --- a/lib/sqlalchemy/dialects/sqlite/pysqlite.py +++ b/lib/sqlalchemy/dialects/sqlite/pysqlite.py @@ -544,7 +544,14 @@ class SQLiteDialect_pysqlite(SQLiteDialect): return None return re.search(a, b) is not None - create_func_kw = {"deterministic": True} if util.py38 else {} + if util.py38 and self._get_server_version_info(None) >= (3, 9): + # sqlite must be greater than 3.8.3 for deterministic=True + # https://docs.python.org/3/library/sqlite3.html#sqlite3.Connection.create_function + # the check is more conservative since there were still issues + # with following 3.8 sqlite versions + create_func_kw = {"deterministic": True} + else: + create_func_kw = {} def set_regexp(dbapi_connection): dbapi_connection.create_function( -- cgit v1.2.1