Django:如何从数据库刷新或重新加载模型

时间:2013-04-04 20:58:17

标签: python django django-models django-forms django-views

我在数据库中的一些表是由Django之外的几个python脚本更新的周期性。因此,Django的视图不知道数据库中的最新数据并显示旧数据。我在网上尝试过很多建议但除了在使用模型之前调用connection.close()之外没什么用。

以下是我尝试过的方法,没有任何效果。

from django.views.decorators.cache import never_cache

@never_cache # <=====
def GetData(request):
    data = Table.objects.get(id=1) # Still giving outdated data

    template = loader.get_template('data/data.html')
    context = Context({
        'lp': lp,
    })
    return HttpResponse(template.render(context))

data = Data.objects.get(id=1)
data = data.objects.get(id=data.id) # data is still old

from django.core.cache import cache
cache.clear()

有效的方法。

from django.db import connection
def GetData(request):
    # Add this before accessing the model.
    # This also connection.close() prevents the 
    # MySQL 2006, 'MySQL server has gone away' error.
    connection.close()

    data = Table.objects.get(id=1) # Giving outdated data

    template = loader.get_template('data/data.html')
    context = Context({
        'lp': lp,
    })
    return HttpResponse(template.render(context))

1 个答案:

答案 0 :(得分:2)

将“transaction-isolation = READ-COMMITTED”添加到my.cnf。更多详情:How do I force Django to ignore any caches and reload data?