aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErlend Egeberg Aasland <erlend.aasland@innova.no>2021-01-06 01:36:04 +0100
committerGitHub <noreply@github.com>2021-01-06 02:36:04 +0200
commitddb5e11683c8db9d2095f2f9406701443c4dc9b3 (patch)
tree1f6aade790390220158f852c9e78d9e58faa27d8 /Lib/sqlite3
parentbpo-38413: Remove outdated section about multithreading in sqlite3 (GH-23159) (diff)
downloadcpython-ddb5e11683c8db9d2095f2f9406701443c4dc9b3.tar.gz
cpython-ddb5e11683c8db9d2095f2f9406701443c4dc9b3.tar.bz2
cpython-ddb5e11683c8db9d2095f2f9406701443c4dc9b3.zip
bpo-24464: Deprecate sqlite3.enable_shared_cache (GH-24008)
Diffstat (limited to 'Lib/sqlite3')
-rw-r--r--Lib/sqlite3/dbapi2.py14
-rw-r--r--Lib/sqlite3/test/dbapi.py7
2 files changed, 21 insertions, 0 deletions
diff --git a/Lib/sqlite3/dbapi2.py b/Lib/sqlite3/dbapi2.py
index 991682ce9ef..6475f98a646 100644
--- a/Lib/sqlite3/dbapi2.py
+++ b/Lib/sqlite3/dbapi2.py
@@ -84,6 +84,20 @@ def register_adapters_and_converters():
register_adapters_and_converters()
+# bpo-24464: enable_shared_cache was deprecated in Python 3.10. It's
+# scheduled for removal in Python 3.12.
+def enable_shared_cache(enable):
+ from _sqlite3 import enable_shared_cache as _old_enable_shared_cache
+ import warnings
+ msg = (
+ "enable_shared_cache is deprecated and will be removed in Python 3.12. "
+ "Shared cache is strongly discouraged by the SQLite 3 documentation. "
+ "If shared cache must be used, open the database in URI mode using"
+ "the cache=shared query parameter."
+ )
+ warnings.warn(msg, DeprecationWarning, stacklevel=2)
+ return _old_enable_shared_cache
+
# Clean up namespace
del(register_adapters_and_converters)
diff --git a/Lib/sqlite3/test/dbapi.py b/Lib/sqlite3/test/dbapi.py
index 2b85ef99f02..3131c1ec2ab 100644
--- a/Lib/sqlite3/test/dbapi.py
+++ b/Lib/sqlite3/test/dbapi.py
@@ -83,6 +83,13 @@ class ModuleTests(unittest.TestCase):
sqlite.DatabaseError),
"NotSupportedError is not a subclass of DatabaseError")
+ def CheckSharedCacheDeprecated(self):
+ for enable in (True, False):
+ with self.assertWarns(DeprecationWarning) as cm:
+ sqlite.enable_shared_cache(enable)
+ self.assertIn("dbapi.py", cm.filename)
+
+
class ConnectionTests(unittest.TestCase):
def setUp(self):