T17: backend penyimpanan bersama db.py (sqlite | mysql via PyMySQL)
- db.py: abstraksi connect/query/queryone/replace_snapshot; %s → ? utk sqlite; replace snapshot mysql = CREATE IF NOT EXISTS + DELETE + INSERT (MVCC) - config/.env.example: VEX_DB_BACKEND (default sqlite) + VEX_DB_HOST/PORT/USER/PASS/NAME - get_voters.persist → db.replace_snapshot; dashboard baca via db.query - LIKE pakai ESCAPE '!' (backslash memutus literal string MySQL, B2); db.query selalu kembalikan list (PyMySQL tuple vs sqlite list, B3) - docker-compose.yml: kontainer uji mariadb:11 (databisnisid-mariadb, 127.0.0.1:3306) - test_mariadb.py: suite integrasi opt-in (skip bila bukan mysql) - SPEC.md §V17/T17/B2/B3; AGENTS.md runbook
This commit is contained in:
1 parent
063fb5e5eb
commit
fdb5d0de15
12 files changed
+307
-79
No files matched your search
+4
-3
@@ -13,6 +13,7 @@ from datetime import datetime, timedelta
|
||||
|
||||
import requests
|
||||
|
||||
import db
|
||||
import get_voters as gv
|
||||
|
||||
|
||||
@@ -69,7 +70,7 @@ def check(tag, cond):
|
||||
|
||||
def main():
|
||||
tmp = tempfile.mkdtemp()
|
||||
gv.DB_PATH = os.path.join(tmp, 'test.db')
|
||||
db.DB_PATH = os.path.join(tmp, 'test.db')
|
||||
|
||||
# V1: ulang ≥3x saat node timeout → hits, lalu sukses
|
||||
calls = {'n': 0}
|
||||
@@ -180,7 +181,7 @@ def main():
|
||||
{'owner': 'ccc3', 'weight': '222.0', 'staked': 1000.0},
|
||||
]
|
||||
gv.persist(set_a)
|
||||
conn = sqlite3.connect(gv.DB_PATH)
|
||||
conn = sqlite3.connect(db.DB_PATH)
|
||||
cnt = conn.execute('SELECT COUNT(*) FROM voters').fetchone()[0]
|
||||
conn.close()
|
||||
check('V7 snapshot pertama = 2', cnt == 2)
|
||||
@@ -190,7 +191,7 @@ def main():
|
||||
{'owner': 'ddd4', 'weight': '333.0', 'staked': 2000.0},
|
||||
]
|
||||
gv.persist(set_b)
|
||||
conn = sqlite3.connect(gv.DB_PATH)
|
||||
conn = sqlite3.connect(db.DB_PATH)
|
||||
rows = conn.execute('SELECT owner, weight, staked, scanned_at FROM voters').fetchall()
|
||||
by = {r[0]: r for r in rows}
|
||||
cols = [r[1] for r in conn.execute('PRAGMA table_info(voters)').fetchall()]
|
||||
|
||||
Reference in new issue
Block a user