From d4a26d730d0913077952714d3d14c454e90e85c7 Mon Sep 17 00:00:00 2001 From: retoor Date: Thu, 2 Jan 2025 19:40:21 +0000 Subject: [PATCH] fix: ensure dict data is JSON-serializable before inserting into database The diff shows a change in `src/metriki/app.py` within the `BaseView.insert` method. The original code directly passed `dict(data)` to the database insert, which could fail if `data` contains non-serializable types like `datetime` objects. The fix converts the data to a JSON string and back using `json.loads(json.dumps(data))`, ensuring all values are plain Python types (strings, numbers, lists, dicts) before insertion. This prevents serialization errors when the database backend expects JSON-compatible data. --- src/metriki/app.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/metriki/app.py b/src/metriki/app.py index f924a34..f0c6556 100644 --- a/src/metriki/app.py +++ b/src/metriki/app.py @@ -47,7 +47,8 @@ class BaseView(web.View): def insert(self, table, data): data['ip'] = self.ip data['created'] = datetime.now() - return self.db[table].insert(dict(data)) + data = json.loads(json.dumps(data)) + return self.db[table].insert(data) def find(self,table,data=None): if not data: