def update(self,record,**kw):
"""Update the record with new keys and values and update indices"""
# update indices
_id = record["__id__"]
for indx in self.indices.keys():
if indx in kw.keys():
if record[indx] == kw[indx]:
continue
# remove id for the old value
old_pos = bisect.bisect(self.indices[indx][record[indx]],_id)-1
del self.indices[indx][record[indx]][old_pos]
if not self.indices[indx][record[indx]]:
del self.indices[indx][record[indx]]
# insert new value
bisect.insort(self.indices[indx].setdefault(kw[indx],[]),_id)
# update record values
record.update(kw)
# increment version number
record["__version__"] += 1
评论列表
文章目录