I've got a pretty simple site where I'm using the
I've had this problem with an SQLite database cache - the
clear() method doesn't clear the cache although it works fine with a MySQL database cache. It seems that a SQLite cache needs a call to
django.db.transation.commit_unless_managed() after the
DELETE from [table] statement is run.
I have been using multiple caches since before official support was added into core as part of 1.3 and so have a wrapper round several of the cache calls - including
clear() - so I was able to override this method and include the
commit_unless_managed(). I think I should probably log it as a bug.
Here's the outline of the code I'm using to flush a memcache cache (the default cache in
django.core.cache) and a database cache stored in the
cache_table of the
from django.db import connections, transaction from django.core.cache import cache # This is the memcache cache. def flush(): # This works as advertised on the memcached cache: cache.clear() # This manually purges the SQLite cache: cursor = connections['cache_database'].cursor() cursor.execute('DELETE FROM cache_table') transaction.commit_unless_managed(using='cache_database')
Rather than being lazy and hard coding it the way I have it should be pretty easy to get the values from