From 5275c332ccbb87ab70347a6a1578d3bf9ce2a343 Mon Sep 17 00:00:00 2001 From: simon987 Date: Sat, 25 Feb 2023 15:38:40 -0500 Subject: [PATCH] Add drop table --- hexlib/db.py | 7 +++++++ setup.py | 2 +- test/test_PersistentState.py | 10 ++++++++++ 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/hexlib/db.py b/hexlib/db.py index 583778a..79470ff 100644 --- a/hexlib/db.py +++ b/hexlib/db.py @@ -283,6 +283,13 @@ class PersistentState: def __getitem__(self, table): return self._table_factory(self, table) + def __delitem__(self, key): + with sqlite3.connect(self.dbfile, **self.dbargs) as conn: + try: + conn.execute(f"DROP TABLE {key}") + except: + pass + def pg_fetch_cursor_all(cur, name, batch_size=1000): while True: diff --git a/setup.py b/setup.py index 9096835..e53efe1 100644 --- a/setup.py +++ b/setup.py @@ -2,7 +2,7 @@ from setuptools import setup setup( name="hexlib", - version="1.82", + version="1.83", description="Misc utility methods", author="simon987", author_email="me@simon987.net", diff --git a/test/test_PersistentState.py b/test/test_PersistentState.py index a65e9f6..68a5422 100644 --- a/test/test_PersistentState.py +++ b/test/test_PersistentState.py @@ -131,3 +131,13 @@ class TestPersistentState(TestCase): s["a"][0] = {"x": b'abc'} self.assertEqual(list(s["a"])[0]["x"], b'abc') + + def test_drop_table(self): + s = PersistentState() + + s["a"][0] = {"x": 1} + s["a"][1] = {"x": 2} + self.assertEqual(len(list(s["a"])), 2) + + del s["a"] + self.assertEqual(len(list(s["a"])), 0)