8000 bpo-42862: Use functools.lru_cache iso. _sqlite.Cache in sqlite3 module by erlend-aasland · Pull Request #24203 · python/cpython · GitHub
[go: up one dir, main page]

Skip to content

bpo-42862: Use functools.lru_cache iso. _sqlite.Cache in sqlite3 module #24203

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 18 commits into from
Jun 3, 2021
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Add tests
  • Loading branch information
Erlend E. Aasland committed May 25, 2021
commit 7830f3b680cab406ed8c2f1c6082aa031a3d8753
28 changes: 28 additions & 0 deletions Lib/sqlite3/test/dbapi.py
Original file line number Diff line number Diff line change
Expand Up @@ -192,6 +192,33 @@ def test_open_uri(self):
cx.execute('insert into test(id) values(1)')


class StatementCacheTests(unittest.TestCase):
def test_statement_cache(self):
query = 'select * from sqlite_master'
cx = sqlite.connect(':memory:')
cx.execute(query) # cache miss
cx.execute(query) # cache hit
cache = cx.statement_cache()
info = cache.cache_info()
self.assertEqual(info.hits, 1)
self.assertEqual(info.misses, 1)
self.assertEqual(info.maxsize, 100)
self.assertEqual(info.currsize, 1)

def test_statement_cache_maxsize(self):
maxsize = 5
testsize = maxsize + 1
cx = sqlite.connect(':memory:', cached_statements=maxsize)
for i in range(testsize):
cx.execute(f'select {i}')
cache = cx.statement_cache()
info = cache.cache_info()
self.assertEqual(info.hits, 0)
self.assertEqual(info.misses, testsize)
self.assertEqual(info.maxsize, maxsize)
self.assertEqual(info.currsize, maxsize)


class CursorTests(unittest.TestCase):
def setUp(self):
self.cx = sqlite.connect(":memory:")
Expand Down Expand Up @@ -943,6 +970,7 @@ def suite():
ExtensionTests,
ModuleTests,
SqliteOnConflictTests,
StatementCacheTests,
ThreadTests,
]
return unittest.TestSuite(
Expand Down
0