Update sqlite3/README.md

This commit is contained in:
2024-08-23 08:03:12 -04:00
parent 15525a7838
commit 60b34883d6

View File

@@ -13,8 +13,7 @@ class DB(sqlite3.Connection):
''') ''')
def __setitem__(self, key, value): def __setitem__(self, key, value):
if not isinstance(value, bytes): if not isinstance(value, bytes): value = json.dumps(value)
value = json.dumps(value)
with self: with self:
cur = self.execute(''' cur = self.execute('''
INSERT OR REPLACE INTO kv_store INSERT OR REPLACE INTO kv_store
@@ -31,28 +30,29 @@ class DB(sqlite3.Connection):
if result: if result:
if isinstance(result[0], str): if isinstance(result[0], str):
try: return json.loads(result[0]) try: return json.loads(result[0])
except: pass except json.JSONDecodeError: pass
return result[0] return result[0]
def delete(self, key): def delete(self, key):
with self: with self:
cur = self.execute(''' cur = self.execute('''
DELETE FROM kv_store WHERE key = ? DELETE FROM kv_store
WHERE key = ?
''', (key,)) ''', (key,))
return {"deleted_count": cur.rowcount} return {"deleted_count": cur.rowcount}
def keys(self, pattern='*'): def keys(self, pattern='*'):
pattern = pattern.translate(str.maketrans({ pattern = pattern.translate(str.maketrans({
'\\': '\\\\', '%': '\\%', '_': '\\_', '*': '%', '?': '_' '\\': '\\\\', '%': '\\%', '_': '\\_', '*': '%', '?': '_'
})) }))
with self: with self:
cur = self.execute(''' result = self.execute('''
SELECT key FROM kv_store SELECT key FROM kv_store
WHERE key LIKE ? ESCAPE '\\' WHERE key LIKE ? ESCAPE '\\'
''', (pattern,)) ''', (pattern,)).fetchall()
return [row[0] for row in cur.fetchall()] return [row[0] for row in result]
def __repr__(self): return repr(self.keys())
``` ```
# Usage # Usage
```python ```python