Update README.md

This commit is contained in:
2024-12-22 13:03:24 +00:00
parent 3d3dd9cf36
commit c48b9f73da

View File

@@ -12,27 +12,17 @@ def SQL():
except (AttributeError, zmq.Again): except (AttributeError, zmq.Again):
(sock := zmq.Context().socket(zmq.REQ)).connect('tcp://localhost:6106') (sock := zmq.Context().socket(zmq.REQ)).connect('tcp://localhost:6106')
sock.RCVTIMEO = 1000; File.sock = sock; return File(blob) sock.RCVTIMEO = 1000; File.sock = sock; return File(blob)
import sqlite3, os; init = not os.path.exists('.db')
import sqlite3
(con := sqlite3.connect('.db', isolation_level=None)).row_factory = sqlite3.Row (con := sqlite3.connect('.db', isolation_level=None)).row_factory = sqlite3.Row
con.executescript(""" if init: con.executescript("""
PRAGMA journal_mode=WAL; PRAGMA journal_mode=WAL;
CREATE TABLE IF NOT EXISTS kv(k, v, t DEFAULT CURRENT_TIMESTAMP); CREATE TABLE kv(k, v, t DEFAULT CURRENT_TIMESTAMP);
CREATE INDEX IF NOT EXISTS index_kv_v ON kv(v); CREATE INDEX index_kv_v ON kv(v);
CREATE INDEX IF NOT EXISTS index_kv_k_t ON kv(k, t DESC); CREATE INDEX index_kv_k_t ON kv(k, t DESC);""")
""")
def setitem(sql, filename, blob):
assert isinstance(blob, bytes)
sql('INSERT INTO kv(k, v) VALUES(?,?)', filename, File(blob))
def getitem(sql, filename):
if sha1 := sql('SELECT v FROM kv WHERE k=? ORDER BY t DESC', filename):
return File(sha1[0]['v'])
def contains(sql, filename):
return bool(sql('SELECT 1 FROM kv WHERE k=?', filename))
def df(sql):
import pandas as pd
return pd.DataFrame(sql('SELECT * FROM kv'))
return type('', (), dict(__call__=lambda _, q, *p: list(map(dict, con.execute(q, p))), return type('', (), dict(__call__=lambda _, q, *p: list(map(dict, con.execute(q, p))),
__setitem__=setitem, __getitem__=getitem, __contains__=contains, df=df))() __setitem__=lambda sql, k, v: sql('INSERT INTO kv(k,v) VALUES(?,?)', k, File(v)),
__getitem__=lambda sql, k: File(v[0]['v']) if (v := sql(
'SELECT v FROM kv WHERE k=? ORDER BY t DESC LIMIT 1', k)) else None,
__contains__=lambda sql, k: bool(sql('SELECT 1 FROM kv WHERE k=?', k))))()
sql = SQL() sql = SQL()
``` ```