import os import sqlite3 import tempfile import zipfile from json import loads as json_loads from .loader import Loader DB_FILE = "instance_log.sqlite" class SQLiteLoader(Loader): conn = None def load(self, file: str): self.conn = sqlite3.connect(file) def get_entry(self) -> dict: cursor = self.conn.cursor() cursor.execute("SELECT * FROM log_entry") for seq, timestamp, json in cursor.fetchall(): yield json_loads(json) class ZipSQLiteLoader(SQLiteLoader): def load(self, file: str): with zipfile.ZipFile(file, "r") as zipped_log, tempfile.TemporaryDirectory() as tmp: zipped_log.extract(DB_FILE, path=tmp) super(ZipSQLiteLoader, self).load(os.path.join(tmp, DB_FILE))