I read a little about concurrency issues with sqlite, but I don't see how they apply to Django, since it is essentially single-threaded. I also do not use multiprocessor modules. I have absolutely no experience in parallel programming, so if someone can determine WHY the following code raises OperationalError: "database is locked", I would appreciate it.
views.py
def screening(request, ovramt=None): errors = [] if request.method == "POST": form = ScreeningForm(request.POST) if form.is_valid(): print "Woo valid!!" return HttpResponse() else: # GET if ovramt is None: o = Ovramt.objects.select_related(depth=1).latest("date_completed") print "found?" print o.id else: try: o = Ovramt.objects.select_related(depth=1).get(id=ovramt) except: errors.append("OVRAMT NOT FOUND") if o.residents.count() <= 0: o.add_active_residents() residents = list(o.residents)
models.py
def add_active_residents(self): ssa_res = SSA_Resident.objects.select_related(depth=1).filter(ssa=self.ssa, active=True) for r in ssa_res: self.residents.add(r.resident)
The add_active_residents method works fine until it is called from the views module. Is there an open connection with an open database in the view that prevents writing from the model? Does anyone have an explanation why this code will be erroneous?
source share