나는 동시에 업데이트하고 싶은 몇 가지 모델이 있습니다. 먼저 데이터베이스에서 간단한 데이터를 가져옵니다.SQLite로 Peewee 공중 공중 충돌
s = Store.get(Store.id == store_id)
new_book = Book.get(Book.id == data[book_id'])
old_book = Book.get(Book.id == s.books.id)
실제 스키마는 여기에 관계가 없습니다. 그리고 나는이 모델에 대한 일부 업데이트를하고 마지막에 나는 그들 셋 모두 저장 :
s.save()
new_book.save()
old_book.save()
쓰기 작업이 단일 트랜잭션으로 오므되도록 이러한 작업은 @db.atomic()
장식을 사용하여 처리하는 기능입니다. 문제는 내가 get()
DB에서 데이터와 수정 된 데이터를 저장하는 지점 사이에 다른 프로세스가 이미 DB에서 이러한 모델로 변경된 경우입니다. 기본 DB 행이 변경되지 않은 경우에만 해당 쓰기 (.save()
작업)를 실행할 수 있습니까? 내가 그들의 last_changed
값을 읽을 수 있지만, 다시 이것을 할 방법이 있습니까 과 동시에 업데이 트합니까? 그리고 데이터가 변경된 경우 단순히 예외를 throw합니까?
'last_changed'가 원래 레코드를 읽을 때와 동일한 지 확인하는 조건으로 'UPDATE' SQL을 수정합니다. – joeb
@joeb 특히 두 개의 다른 테이블을 업데이트 할 때 Peewee에서 어떻게 보이는지 보여주는 예가 있습니까? – mart1n
필자는 Peewee에 익숙하지 않지만 http://stackoverflow.com/a/27528623/174652와 http://stackoverflow.com/questions/7079540/sqlite-atomically-read-and-update-a-를 확인하십시오. 계수기 – joeb