MongoEngine MongoDB 팁 - 입력 실패시?

DB 동시 입력시 실패하는 경우?

일단 현재는 에러 확인 처리가 없다.

모든 save(), update() 함수 아래에서 그 결과를 체크하는 루틴을 넣고 필요에 따라 2번 3번 성공할 때 까지 작업을 하도록 하자.

 

MongoEngine 의 save() 함수는 단순한 insert 가 아니어서 에러 핸들링에 유리하다.

 

page = Page(title="Test Page")

page.save()

# Performs an insert

page.title = "My Page"

page.save()

# Performs an atomic set on the title field

 

즉, save 하고, object.id 읽어보고 없다면 다시 save를 그대로 호출하면 DB에 있다면 수정이 되고, 없다면 다시 입력을 할 것이다.

ritem =  targetTable(orderitem=orderitem, starttime=item["starttime"], endtime=item["endtime"], serial=item["serial"], box=item["box"])
print(ritem.id, type(ritem.id))
if ritem.id :
    print("None 체크 안됨")
else:
    print("None 체크")
ritem.save()
print(ritem.id, type(ritem.id))
if ritem.id :
	saveconfirm_item = targetTable.objects.get(id=ritem.id)
	resultitem['resultid'] = str(saveconfirm_item.id)
	resultitem['serial'] = saveconfirm_item.serial
	retids.append(resultitem)
	
>> 결과는?
None <class 'NoneType'> # save 전에는 None 이다.
None 체크 # None 체크가 정상적으로 수행된다.
60dd08ac1649570ca8162e28 <class 'bson.objectid.ObjectId'> # save 이후에는 objectid 가 할당됨

가을 단풍

Sonya Livshits 님의 사진, 출처: Pexels