Create a new dict before updating data. Fixes #53

This commit is contained in:
Friedrich Lindenberg 2013-12-04 11:09:22 +01:00
parent b7bbde45fa
commit ff247f17cc

View File

@ -125,18 +125,19 @@ class Table(object):
if not keys or len(keys)==len(row): if not keys or len(keys)==len(row):
return False return False
clause = [(u, row.get(u)) for u in keys] clause = [(u, row.get(u)) for u in keys]
"""
Don't update the key itself, so remove any keys from the row dict
"""
for key in keys:
if key in row.keys():
del row[key]
if ensure: if ensure:
self._ensure_columns(row, types=types) self._ensure_columns(row, types=types)
# Don't update the key itself, so remove any keys from the row dict
clean_row = {}
for key, value in row.items():
if key not in keys:
clean_row[key] = value
try: try:
filters = self._args_to_clause(dict(clause)) filters = self._args_to_clause(dict(clause))
stmt = self.table.update(filters, row) stmt = self.table.update(filters, clean_row)
rp = self.database.executable.execute(stmt) rp = self.database.executable.execute(stmt)
return rp.rowcount > 0 return rp.rowcount > 0
except KeyError: except KeyError: