具体来说,我只是谈论跨线程修改模型的单独实例(不共享相同的实例)。但是从一个线程调用save()是否安全,而多个其他线程正在调用Model.objects.query()或Model.objects.get()?
答案 0 :(得分:1)
就我们所说的保存与获取和查询而言,您是安全的,因为涉及到不同的查询集对象。实际上,每个query
,filter
,get
调用等都会创建一个新的查询集实例,并且不会修改任何以前存在的对象。
但显然,当您从多个线程/客户端同时访问/修改相同的数据库记录时,您可能会遇到问题。
我记得,为了处理数据库更新的一致性,在oracle db和带有禁用自动提交的mysql inndodb中有一个select for update
语句。