示例#1
0
 def set(self, key, value, timeout=None):
     if timeout is None:
         timeout = self.default_timeout
     cursor = db.cursor()
     cursor.execute("SELECT COUNT(*) FROM %s" % self._table)
     num = cursor.fetchone()[0]
     now = datetime.now().replace(microsecond=0)
     exp = datetime.fromtimestamp(time.time() + timeout).replace(microsecond=0)
     if num > self._max_entries:
         self._cull(cursor, now)
     encoded = base64.encodestring(pickle.dumps(value, 2)).strip()
     cursor.execute("SELECT cache_key FROM %s WHERE cache_key = %%s" % self._table, [key])
     try:
         if cursor.fetchone():
             cursor.execute(
                 "UPDATE %s SET value = %%s, expires = %%s WHERE cache_key = %%s" % self._table,
                 [encoded, str(exp), key],
             )
         else:
             cursor.execute(
                 "INSERT INTO %s (cache_key, value, expires) VALUES (%%s, %%s, %%s)" % self._table,
                 [key, encoded, str(exp)],
             )
     except DatabaseError:
         # To be threadsafe, updates/inserts are allowed to fail silently
         pass
     else:
         db.commit()
def clean_up():
    # Clean up old database records
    cursor = db.cursor()
    cursor.execute("DELETE FROM %s WHERE %s < NOW()" % \
        (db.quote_name('core_sessions'), db.quote_name('expire_date')))
    cursor.execute("DELETE FROM %s WHERE %s < NOW() - INTERVAL '1 week'" % \
        (db.quote_name('registration_challenges'), db.quote_name('request_date')))
    db.commit()
示例#3
0
 def get(self, key, default=None):
     cursor = db.cursor()
     cursor.execute("SELECT cache_key, value, expires FROM %s WHERE cache_key = %%s" % self._table, [key])
     row = cursor.fetchone()
     if row is None:
         return default
     now = datetime.now()
     if row[2] < now:
         cursor.execute("DELETE FROM %s WHERE cache_key = %%s" % self._table, [key])
         db.commit()
         return default
     return pickle.loads(base64.decodestring(row[1]))
示例#4
0
 def delete(self, key):
     cursor = db.cursor()
     cursor.execute("DELETE FROM %s WHERE cache_key = %%s" % self._table, [key])
     db.commit()