Python 数据库和Django ORM输出在断点处不一致

Python 数据库和Django ORM输出在断点处不一致,python,django,database,postgresql,pdb,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\u数据库,我仍然可以看到行(根据Django删除)。为什么我看到Django ORM和数据库之间存在这种不一致。ORM是

在Django中调试单元测试时,我在代码中放入了以下语句

Student.objects.filter(id__in=[1,2]).delete()
...
import pdb; pdb.set_trace()
在断点处,如果我键入
Student.objects.count()
,我可以看到它由于删除而减少,但是如果我打开
psql
(PostgreSQL命令行)并检查
test\u数据库
,我仍然可以看到行(根据Django删除)。为什么我看到Django ORM和数据库之间存在这种不一致。ORM是否缓存我的查询?如何使其在断点处提交到数据库

更新

调试的快速解决方案。在断点处添加以下行以查看
psql
中的数据。感谢@DanielRoseman的提示

    from django.db import connection
    connection.cursor().execute('commit;')

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

感谢您指出这一点。在阅读了一些关于交易的信息后,这是有意义的。否则,对于一个不熟悉内部工作原理的人来说,这是令人困惑的。