변경 사항을 감지하기 위해 만든 마지막 백업과 비교하기 위해 sqlite 데이터베이스 파일의 해시를 계산하는 데 사용하려는 다음과 같은 기능이 있습니다.
def get_hash (file_path) : # http://stackoverflow.com/a/3431838/1391717 hash_sha1 = hashlib.sha1 with open (file_path, "rb") as f : for chunk in iter (lambda : f.read (4096) , b "") : hash_sha1.update (chunk) return hash_sha1.hexdigest ()
데이터베이스를 잠글 계획이므로 해시를 계산하는 동안 아무도 쓸 수 없습니다. 이렇게하는 동안 내가 해를 끼칠 수 있습니까?
// http://codereview.stackexchange.com/questions/78643/create-sqlite-backups connection = sqlite3.connect (database_file) cursor = connection.cursor () cursor.execute ( "즉시 시작") db_hash = get_hash (args .데이터 베이스)
sqlite3 데이터베이스 파일은 동시에 여러 독자가 읽을 수 있으며 읽을 수 있습니다. sqlite3와 관련하여 동시성에는 문제가 없습니다. sqlite3 고유의 문제는 파일 쓰기와 관련이 있으며 한 명의 작성자 만 허용됩니다.
그러니 벌금 만 읽으면.
데이터베이스를 잠그고 성공할 계획이라면 해시를 계산하는 동안 배타적 액세스 권한을 가진 작성자가됩니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다