2010-08-23 5 views
1

응용 프로그램 구성 (다른 프로세스에 의해 수행) : 주기적으로 DB를 확인하는 것이SQLAlchemy의 세션이

  • 주 과정 (파이썬 + SQLAlchemy의)
  • (대부분의 시간 자고)

문제는 주 과정 세션이 등록하지 않는 것이다 dB로 쓰기

  • 웹 응용 프로그램을 dB로 쓰기 자식 프로세스 해당 세션 외부에서 수행 된 db의 변경 사항. 어떻게 보장합니까? (현재 프로세스가 깨어나고 확인을 할 때마다 세션을 닫고 다시 엽니 다.) 내가 폐쇄 세션마다 시간을 재개하고

  • +1

    커밋을 수행 하시겠습니까? 일부 코드는 일반적으로 자신이하는 일을 분명히하는 데 도움이됩니다. 문제를 분명히 보여주는 ** 가장 작은 ** 코드 조각을 게시하십시오. –

    답변

    1

    과정은 각성하고 체크

    SQLAlchemy의이 같은 작동하지 않습니다 않습니다. 변경 사항은 세션에서 추적됩니다.

    someobj = Session.query(SomeClass).first() 
    

    Session 내부 캐시에 someobj을 넣습니다. someobj.attr = val을 수행하면 someobj와 연결된 세션의 변경 사항을 표시합니다.

    따라서 어떤 session1에서 object1을 당긴 경우 닫힌 session1, object1은 더 이상 어떤 세션과도 연관되지 않으며 추적되지 않습니다.

    가장 좋은 방법은 변화에 권리를 위탁하는 것입니다 :

    object1 = newsession.add(object1) 
    newsession.commit() 
    

    그렇지 않으면 당신은 자신의 객체 캐시를 관리해야하고 각 검사에 그들 모두를 병합합니다.