在Django中调试单元测试时,我在代码中放置了以下语句
Student.objects.filter(id__in=[1,2]).delete()
...
import pdb; pdb.set_trace()
在断点处,如果我输入Student.objects.count()
,我可以看到它因删除而减少但是如果我打开psql
(PostgreSQL命令行)并检查test_database
,我仍然可以看到行(根据Django删除)。为什么我看到Django ORM& amp;数据库。 ORM是否缓存了我的查询?如何让它在断点处提交数据库?
更新:
快速调试解决方案。在断点处添加以下行以查看psql
中的数据。感谢@DanielRoseman的提示。
from django.db import connection
connection.cursor().execute('commit;')
答案 0 :(得分:2)
Django请求通常在事务中运行。在会话返回时提交事务之前,您的psql会话将看不到更改。