相关疑难解决方法(0)

如何强制Django忽略任何缓存并重新加载数据?

我正在使用来自未通过HTTP请求调用的进程的Django数据库模型.该过程应该每隔几秒轮询一次新数据并对其进行一些处理.我有一个循环,睡眠几秒钟,然后从数据库中获取所有未处理的数据.

我所看到的是,在第一次获取后,进程永远不会看到任何新数据.我运行了一些测试,看起来Django正在缓存结果,即使我每次都在构建新的QuerySet.为了验证这一点,我从Python shell中做到了这一点:

>>> MyModel.objects.count()
885
# (Here I added some more data from another process.)
>>> MyModel.objects.count()
885
>>> MyModel.objects.update()
0
>>> MyModel.objects.count()
1025
Run Code Online (Sandbox Code Playgroud)

如您所见,添加新数据不会更改结果计数.但是,调用管理器的update()方法似乎可以解决问题.

我找不到有关该update()方法的任何文档,也不知道它可能做的其他坏事.

我的问题是,为什么我看到这种缓存行为,这与Django文档所说的相矛盾?我该如何防止它发生?

python django caching

74
推荐指数
5
解决办法
4万
查看次数

使用django.db.connection.queries

我有一个Python/Django应用程序,它运行了很多SQL语句.出于调试目的,我想我应该为我创建一个简单的视图,它只列出已经运行的所有SQL语句.

根据文档,这段代码应该足以做到这一点:

    from django.db import connection
    connection.queries
Run Code Online (Sandbox Code Playgroud)

只要DEBUG是真的.

但是,这并没有给我任何东西.DEBUG肯定设置为True.在什么情况下这个connection.queries存储?我的意思是,我应该能够执行一个执行大量SQL语句的页面,然后切换到我创建的http:// myserver/sql视图,看看那些SQL语句,对吗?当然使用相同的浏览器会话...

我确实检查了db.reset_queries()是否在代码中的任何地方运行,看起来不是.

任何想法为什么connection.queries总是空的?

django connection django-queryset

10
推荐指数
2
解决办法
2万
查看次数

标签 统计

django ×2

caching ×1

connection ×1

django-queryset ×1

python ×1