[python] SQLAlchemy : flush ()와 commit ()의 차이점은 무엇입니까?


Answers

@snapshoe가 말했듯

flush() 는 SQL 문을 데이터베이스로 보낸다.

commit() 은 트랜잭션을 커밋합니다.

session.autocommit == False 일 경우 :

autoflush == True이면 commit ()은 flush ()를 호출합니다.

session.autocommit == True 일 때 :

트랜잭션을 시작하지 않은 경우에는 commit ()을 호출 할 수 없습니다. 트랜잭션을 수동으로 관리하지 않으려면이 모드 만 사용하기 때문에 트랜잭션을 시작하지 않았을 수는 없습니다.

이 모드에서는 flush ()를 호출하여 ORM 변경 사항을 저장해야합니다. 플러시는 효과적으로 데이터를 커밋합니다.

Question

SQLAlchemy에서 flush()commit() 사이의 차이점은 무엇입니까?

필자는 문서를 읽었지만 더 현명한 사람은 아닙니다. 그들은 내가 가지고 있지 않은 사전 이해를하는 것처럼 보입니다.

나는 특히 메모리 사용에 대한 그들의 영향에 관심이있다. 일련의 파일 (총 약 500 만 행)에서 일부 데이터를 데이터베이스로로드하고 있으며 세션이 가끔 떨어지는 경우가 있습니다. 메모리가 크지 않은 대용량 데이터베이스와 시스템입니다.

나는 너무 많은 commit() flush() 호출과 충분하지 않은 flush() 호출을 사용하고 있는지 궁금합니다. 그러나 차이점을 실제로 이해하지 못하면 말할 수 없습니다!




Links