数据库与断点处的Django ORM输出之间的不一致

时间:2014-12-28 18:25:20

标签: python django database postgresql pdb

在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;')

1 个答案:

答案 0 :(得分:2)

Django请求通常在事务中运行。在会话返回时提交事务之前,您的psql会话将看不到更改。