From ab54ab981a00478194017ca3f75405efa0f4797a Mon Sep 17 00:00:00 2001 From: Yax Date: Fri, 1 Jan 2021 11:18:35 +0100 Subject: [PATCH] backup sqlite db to json with tinyDB --- stacosys/core/database.py | 24 ++++++++++-------------- tests/test_persistence.py | 20 -------------------- 2 files changed, 10 insertions(+), 34 deletions(-) delete mode 100644 tests/test_persistence.py diff --git a/stacosys/core/database.py b/stacosys/core/database.py index 5be8287..dbce608 100644 --- a/stacosys/core/database.py +++ b/stacosys/core/database.py @@ -1,8 +1,10 @@ #!/usr/bin/python # -*- coding: UTF-8 -*- +import json from playhouse.db_url import connect - +from playhouse.shortcuts import model_to_dict +from tinydb import TinyDB from stacosys.conf import config @@ -15,27 +17,21 @@ def setup(): from stacosys.model.comment import Comment get_db().create_tables([Site, Comment], safe=True) + if config.exists(config.DB_BACKUP_JSON_FILE): + _backup_db(config.DB_BACKUP_JSON_FILE, Comment) -from playhouse.shortcuts import model_to_dict -import json - - -def tojson_model(comment): +def _tojson_model(comment): dcomment = model_to_dict(comment) - del dcomment["site"] + # del dcomment["site"] tcomment = json.dumps(dcomment, indent=4, sort_keys=True, default=str) return json.loads(tcomment) -def dump_db(): - from tinydb import TinyDB, Query - from stacosys.model.comment import Comment - - db = TinyDB("db.json", sort_keys=True, indent=4, separators=(",", ": ")) +def _backup_db(db_file, Comment): + db = TinyDB(db_file, sort_keys=True, indent=4, separators=(",", ": ")) db.drop_tables() table = db.table("comments") for comment in Comment.select(): - cc = tojson_model(comment) - print(cc) + cc = _tojson_model(comment) table.insert(cc) diff --git a/tests/test_persistence.py b/tests/test_persistence.py deleted file mode 100644 index d4dd92d..0000000 --- a/tests/test_persistence.py +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/python -# -*- coding: UTF-8 -*- - -import pytest - - -@pytest.fixture -def persistence(): - from stacosys.conf import config - - config.params = {"main.db_file": None} - from stacosys.core import persistence - - return persistence.Persistence() - - -def test_init_persistence(persistence): - assert persistence is not None - assert persistence.get_db() is not None - assert persistence.get_table_comments() is not None