From 6c78a9123317fea643e61cd9dba7e9a67549436e Mon Sep 17 00:00:00 2001 From: jay817 Date: Fri, 20 Dec 2024 05:40:11 +0000 Subject: [PATCH] Update README.md --- README.md | 39 +++++++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 7103475..7e3ba85 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,3 @@ -# install bashrc -```shell -ln -s $(pwd)/wiki/linux-bash/bash_aliases.sh ~/.bash_aliases -source "$HOME/.${SHELL##*/}rc" -``` - ## ThreadPoolExecutor ```py __import__('concurrent').futures.ThreadPoolExecutor().submit( @@ -17,4 +11,37 @@ def File(blob): except (AttributeError, zmq.Again): (sock := zmq.Context().socket(zmq.REQ)).connect('tcp://localhost:6106') sock.RCVTIMEO = 1000; File.sock = sock; return File(blob) +``` + +## sqlite3 +```py +def SQL(): + def File(blob): + try: import zmq; File.sock.send_pyobj(blob); return File.sock.recv_pyobj() + except (AttributeError, zmq.Again): + (sock := zmq.Context().socket(zmq.REQ)).connect('tcp://localhost:6106') + sock.RCVTIMEO = 1000; File.sock = sock; return File(blob) + + import sqlite3 + (con := sqlite3.connect('.db', isolation_level=None)).row_factory = sqlite3.Row + con.executescript(""" + PRAGMA journal_mode=WAL; + CREATE TABLE IF NOT EXISTS kv(k, v, t DEFAULT CURRENT_TIMESTAMP); + CREATE INDEX IF NOT EXISTS index_kv_v ON kv(v); + CREATE INDEX IF NOT EXISTS 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))), + __setitem__=setitem, __getitem__=getitem, __contains__=contains, df=df))() +sql = SQL() ``` \ No newline at end of file