Update README.md
This commit is contained in:
39
README.md
39
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()
|
||||
```
|
||||
Reference in New Issue
Block a user