django的ORM线程安全吗?

Jon*_*han 8 django multithreading thread-safety django-orm

我有一个python程序,它使用django的ORM进行数据库访问.该程序具有各种线程,每个线程都可能通过读取或写入来访问数据库.请注意,此程序不是Web服务器.

django的ORM线程安全吗?
它可以在同一个解释器中从不同的线程并行使用吗?
答案取决于交易管理模式吗?django版?还要别的吗?

Mar*_*sar 5

是的,

方法查询、过滤、获取、排除等。返回一个新的 QuerySet 对象,这样基本就完成了,在线程中执行查询不会有问题,因为它总是返回一个没有过去引用的新对象。

禁用自动提交设置。您可能会更频繁地使用事务和 select_related 方法来避免常见的线程问题,例如同时访问行。

我建议您始终检查您的代码是否会返回一个新的 QuerySet 对象,并且不要将查询集作为函数中的参数发送,您会没事的。

  • 为什么要禁用默认的自动提交设置?我应该什么时候提交查询? (2认同)