From a3196500043123e0ac15569d387d1ec464704f88 Mon Sep 17 00:00:00 2001 From: XANTRONIX Development Date: Wed, 4 Dec 2024 14:36:11 -0500 Subject: [PATCH] Implement Database.update() to change only modified columns --- lib/nntp/tiny/db.py | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/nntp/tiny/db.py b/lib/nntp/tiny/db.py index fc96d49..e72dec0 100644 --- a/lib/nntp/tiny/db.py +++ b/lib/nntp/tiny/db.py @@ -110,6 +110,21 @@ class Database(): setattr(obj, table.key, cr.lastrowid) + def update(self, obj): + if not obj.__dirty__: + return + + dirty = [k for k in obj.__dirty_columns__ if obj.__dirty_columns__[k] > 0] + table = type(obj) + sql = f"update {table.name} set " + sql += ", ".join([f"{k} = ?" for k in dirty]) + sql += f" where {table.key} = ?" + + values = [getattr(obj, k) for k in dirty] + values.append(getattr(obj, table.key)) + + self.db.execute(sql, values) + def query_sql(self, table, sql, values=list()): cr = DatabaseTableCursor(table, self.db.cursor()) cr.execute(sql, values)