| 344 | return self.decode(s.data) |
| 345 | |
| 346 | def __setitem__(self, key, value): |
| 347 | # Remove the leading `b` of bytes object (`b"..."`), otherwise encoded |
| 348 | # value is invalid base64 format. |
| 349 | pickled = self.encode(value).decode() |
| 350 | |
| 351 | now = datetime.datetime.now() |
| 352 | if key in self: |
| 353 | self.db.update( |
| 354 | self.table, |
| 355 | where="session_id=$key", |
| 356 | data=pickled, |
| 357 | atime=now, |
| 358 | vars=locals(), |
| 359 | ) |
| 360 | else: |
| 361 | self.db.insert(self.table, False, session_id=key, atime=now, data=pickled) |
| 362 | |
| 363 | def __delitem__(self, key): |
| 364 | self.db.delete(self.table, where="session_id=$key", vars=locals()) |