Implement Database.update() to change only modified columns
This commit is contained in:
parent
16ac4906d0
commit
a319650004
1 changed files with 15 additions and 0 deletions
|
@ -110,6 +110,21 @@ class Database():
|
||||||
|
|
||||||
setattr(obj, table.key, cr.lastrowid)
|
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()):
|
def query_sql(self, table, sql, values=list()):
|
||||||
cr = DatabaseTableCursor(table, self.db.cursor())
|
cr = DatabaseTableCursor(table, self.db.cursor())
|
||||||
cr.execute(sql, values)
|
cr.execute(sql, values)
|
||||||
|
|
Loading…
Add table
Reference in a new issue