1

具体来说,我只是在谈论跨线程修改模型的单独实例(不共享相同的确切实例)。但是从一个线程调用 save() 是否安全,而多个其他线程正在调用 Model.objects.query() 或 Model.objects.get() 例如?

4

1 回答 1

3

就我们谈论保存与获取和查询而言,您是安全的,因为涉及不同的查询集对象。事实上,每一个query, filter,get调用等都会创建一个新的查询集实例,并且不会修改任何先前存在的对象。

但显然,当从多个线程/客户端同时访问/修改相同的数据库记录时,您可能会遇到问题,依此类推。

我记得,为了处理数据库更新的一致性,在 oracle db 和 mysql inndodb with disabled autocommit 中有一条select for update语句。

于 2013-10-23T19:50:47.363 回答