세션 객체를 만들 때 주기적으로 flush()를 실행하도록 구성 할 수 있습니까?SQLAlchemy session.flush()를 주기적으로 구성하는 방법
이 기능이 필요한 이유는 세션의 범위에서 비 단기 배경 작업이 메모리에서 실행되고 있기 때문입니다. 나는이 프로그램이 정기적으로 flush()를 사용하여 DB의 작업 진행 상황을 업데이트하여 내 클라이언트가 DB로부터 진행 상황을 쿼리 할 수있게하려고한다.
현재 내 솔루션에서는 정기적으로 session.flush()를 실행하는 다른 스레드를 사용하고 있습니다.
감사합니다.
다른 클라이언트가 변경 사항을 볼 수있게하려면'commit()'을 호출해야합니다. 'flush()'도 작동한다는 사실은 사용하고있는 격리 수준의 부작용입니다. 목표를 달성하려면 작업의 진행 상태를보고 할 때마다 모델을 업데이트하고 커밋하십시오. 별도의 스레드가 필요 없습니다. – univerio
'commit()'을 가져 주셔서 감사합니다. 몇 가지 실험을 한 후 세션의 트랜잭션 수준이 반복 읽기이지만 클라이언트가 커밋되지 않은 업데이트를 읽을 수 있음을 알았습니다. 왜 이런 일이 일어나는 지 아십니까? – 8090PZ
당신은'autoflush'를 켜고 autoflush를 트리거하거나'autocommit'을 on으로 설정합니다. – univerio