Python Django can';无法清除Oracle后端上的数据库缓存
我的oracle缓存表中有一行。我试图用标准的django方式清除它:Python Django can';无法清除Oracle后端上的数据库缓存,python,django,oracle,cx-oracle,django-cache,Python,Django,Oracle,Cx Oracle,Django Cache,我的oracle缓存表中有一行。我试图用标准的django方式清除它: from django.core.cache import cache cache.clear() 但它不起作用!该行仍在我的缓存表中 因此,我运行了python manage.py sell,并从DatabaseCache.clear()方法中放入了一些代码: from django.db import connections table = connections['cache'].ops.quote_name('ws
from django.core.cache import cache
cache.clear()
但它不起作用!该行仍在我的缓存表中
因此,我运行了python manage.py sell
,并从DatabaseCache.clear()
方法中放入了一些代码:
from django.db import connections
table = connections['cache'].ops.quote_name('ws_cache_table')
cursor = connections['cache'].cursor()
cursor.execute('DELETE FROM %s' % table)
但它也不起作用
我没有引发任何异常,我的“缓存”连接在settings.py中配置正确
当我打开SQL Developer并将
DELETE FROM ws_cache_table
表被正确截断
另一方面,当我添加:
connections['cache'].commit()
我得到异常django.db.transaction.TransactionManagementError:此代码未在事务管理下抛出,但表现在被截断
问题是:我应该怎么做才能使我的表被截断,但不引发异常
这是djangoDatabaseCache.clear()方法中的错误吗
我正在使用django 1.4。您是否有django调试工具栏
?也许您可以运行/manage.py debugsqlshell
并运行相同的命令来查看SQL输出。毫不奇怪,输出是“从ws_缓存中删除”;)好的,这是意料之中的。尝试使用commit\u,除非\u managed()
而不是commit()
。(仅根据您的例外情况进行猜测)