diff --git a/Doc/whatsnew/3.10.rst b/Doc/whatsnew/3.10.rst
index b5fb1e9a629c1c..5be1f0b9c020ec 100644
--- a/Doc/whatsnew/3.10.rst
+++ b/Doc/whatsnew/3.10.rst
@@ -462,6 +462,14 @@ Deprecated
scheduled for removal in Python 3.12.
(Contributed by Erlend E. Aasland in :issue:`42264`.)
+* The undocumented built-in function ``sqlite3.enable_shared_cache`` is now
+ deprecated, scheduled for removal in Python 3.12. Its use is strongly
+ discouraged by the SQLite3 documentation. See `the SQLite3 docs
+ `_ for more details.
+ If shared cache must be used, open the database in URI mode using the
+ ``cache=shared`` query parameter.
+ (Contributed by Erlend E. Aasland in :issue:`24464`.)
+
Removed
=======
diff --git a/Lib/sqlite3/dbapi2.py b/Lib/sqlite3/dbapi2.py
index 991682ce9ef3b7..6475f98a646f9e 100644
--- a/Lib/sqlite3/dbapi2.py
+++ b/Lib/sqlite3/dbapi2.py
@@ -84,6 +84,20 @@ def convert_timestamp(val):
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 7867bf361e5ac6..2219868a45f65a 100644
--- a/Lib/sqlite3/test/dbapi.py
+++ b/Lib/sqlite3/test/dbapi.py
@@ -83,6 +83,13 @@ def CheckNotSupportedError(self):
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):
diff --git a/Misc/NEWS.d/next/Library/2020-12-30-14-56-25.bpo-24464.vbNVHe.rst b/Misc/NEWS.d/next/Library/2020-12-30-14-56-25.bpo-24464.vbNVHe.rst
new file mode 100644
index 00000000000000..2039c1ca9c0c46
--- /dev/null
+++ b/Misc/NEWS.d/next/Library/2020-12-30-14-56-25.bpo-24464.vbNVHe.rst
@@ -0,0 +1,3 @@
+The undocumented built-in function ``sqlite3.enable_shared_cache`` is now
+deprecated, scheduled for removal in Python 3.12. Its use is strongly
+discouraged by the SQLite3 documentation. Patch by Erlend E. Aasland.
pFad - Phonifier reborn
Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.
Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.
Alternative Proxies:
Alternative Proxy
pFad Proxy
pFad v3 Proxy
pFad v4 Proxy