Change signature of .upsert and .update on table according to: fixes #43.
This commit is contained in:
parent
edef86126f
commit
537557285d
@ -137,9 +137,9 @@ class Table(object):
|
|||||||
filters = self._args_to_clause(dict(clause))
|
filters = self._args_to_clause(dict(clause))
|
||||||
stmt = self.table.update(filters, clean_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
|
||||||
except KeyError:
|
except KeyError:
|
||||||
return False
|
return 0
|
||||||
|
|
||||||
def upsert(self, row, keys, ensure=True, types={}):
|
def upsert(self, row, keys, ensure=True, types={}):
|
||||||
"""
|
"""
|
||||||
@ -161,10 +161,20 @@ class Table(object):
|
|||||||
for key in keys:
|
for key in keys:
|
||||||
filters[key] = row.get(key)
|
filters[key] = row.get(key)
|
||||||
|
|
||||||
if self.find_one(**filters) is not None:
|
res = self.find_one(**filters)
|
||||||
self.update(row, keys, ensure=ensure, types=types)
|
if res is not None:
|
||||||
|
row_count = self.update(row, keys, ensure=ensure, types=types)
|
||||||
|
if row_count == 0:
|
||||||
|
return False
|
||||||
|
elif row_count == 1:
|
||||||
|
try:
|
||||||
|
return res['id']
|
||||||
|
except KeyError:
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return True
|
||||||
else:
|
else:
|
||||||
self.insert(row, ensure=ensure, types=types)
|
return self.insert(row, ensure=ensure, types=types)
|
||||||
|
|
||||||
def delete(self, **_filter):
|
def delete(self, **_filter):
|
||||||
""" Delete rows from the table. Keyword arguments can be used
|
""" Delete rows from the table. Keyword arguments can be used
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user