Update sqlite3/Files/README.md
This commit is contained in:
@@ -1,37 +1,40 @@
|
|||||||
```python
|
```python
|
||||||
import sqlite3, pandas as pd
|
import sqlite3, pandas as pd
|
||||||
|
|
||||||
|
|
||||||
class Files:
|
class Files:
|
||||||
def __init__(self, db='files.sqlite'):
|
|
||||||
|
def __init__(self, db="files.sqlite"):
|
||||||
self.conn = sqlite3.connect(db, isolation_level=None)
|
self.conn = sqlite3.connect(db, isolation_level=None)
|
||||||
self.conn.row_factory = sqlite3.Row
|
self.conn.row_factory = sqlite3.Row
|
||||||
self('PRAGMA journal_mode=WAL')
|
self("PRAGMA journal_mode=WAL")
|
||||||
self('CREATE TABLE IF NOT EXISTS files (filename TEXT PRIMARY KEY, content BLOB)')
|
self("CREATE TABLE IF NOT EXISTS files (filename TEXT PRIMARY KEY, content BLOB)")
|
||||||
|
|
||||||
def __call__(self, *args) -> pd.DataFrame:
|
def __call__(self, *args) -> pd.DataFrame:
|
||||||
return pd.DataFrame(dict(row) for row in self.conn.execute(*args))
|
return pd.DataFrame(dict(row) for row in self.conn.execute(*args))
|
||||||
|
|
||||||
def __setitem__(self, filename, content) -> None:
|
def __setitem__(self, filename, content) -> None:
|
||||||
assert isinstance(filename, str)
|
assert isinstance(filename, str)
|
||||||
if isinstance(content, str): content = content.encode()
|
if isinstance(content, str):
|
||||||
|
content = content.encode()
|
||||||
assert isinstance(content, bytes)
|
assert isinstance(content, bytes)
|
||||||
self('INSERT OR REPLACE INTO files VALUES (?,?)', (filename, content))
|
self("INSERT OR REPLACE INTO files VALUES (?,?)", (filename, content))
|
||||||
|
|
||||||
def __getitem__(self, filename) -> bytes:
|
def __getitem__(self, filename) -> bytes:
|
||||||
return self('SELECT content FROM files WHERE filename=?', (filename,)).content[0]
|
return self("SELECT content FROM files WHERE filename=?", (filename,)).content[0]
|
||||||
|
|
||||||
def __delitem__(self, filename) -> None:
|
def __delitem__(self, filename) -> None:
|
||||||
self('DELETE FROM files WHERE filename=?', (filename,))
|
self("DELETE FROM files WHERE filename=?", (filename,))
|
||||||
|
|
||||||
def __iter__(self):
|
def __iter__(self):
|
||||||
df = self('SELECT filename FROM files')
|
df = self("SELECT filename FROM files")
|
||||||
return iter([] if df.empty else df.filename)
|
return iter([] if df.empty else df.filename)
|
||||||
|
|
||||||
def __contains__(self, filename: str) -> bool:
|
def __contains__(self, filename: str) -> bool:
|
||||||
return not self('SELECT 1 FROM files WHERE filename=?', (filename,)).empty
|
return not self("SELECT 1 FROM files WHERE filename=?", (filename,)).empty
|
||||||
|
|
||||||
def __len__(self) -> int:
|
def __len__(self) -> int:
|
||||||
return self('SELECT COUNT(*) FROM files').iloc[0, 0]
|
return self("SELECT COUNT(*) FROM files").iloc[0, 0]
|
||||||
|
|
||||||
files = Files()
|
files = Files()
|
||||||
for filename in files:
|
for filename in files:
|
||||||
|
|||||||
Reference in New Issue
Block a user