在Django中调试单元测试时,我在代码中放置了以下语句
Student.objects.filter(id__in=[1,2]).delete()
...
import pdb; pdb.set_trace()
在断点处,如果我键入Student.objects.count()
,我可以看到它由于delete而减少了,但是如果我打开psql
(PostgreSQL命令行)并检查test_database
,我仍然可以看到行(根据Django已经删除)。为什么我会看到Django ORM和数据库之间的不一致。ORM是否缓存我的查询?如何使其在断点处提交到数据库?你知道吗
更新:
调试的快速解决方案。在断点处添加以下行以查看psql
中的数据。感谢@DanielRoseman的提示。你知道吗
from django.db import connection
connection.cursor().execute('commit;')
Django请求通常在事务内部运行。在会话返回时提交事务之前,psql会话不会看到更改。你知道吗
相关问题 更多 >
编程相关推荐