2010-08-23 25 views
1

應用包括:SQLAlchemy的會議(由其他進程完成)

  • 主要過程(蟒蛇+ SQLAlchemy的),其 定期檢查分貝(睡覺的大部分時間 )
  • 那寫分貝爲寫DB

問題是,主進程會議似乎並沒有註冊

  • Web應用程序的子進程在該會話之外完成的數據庫更改。如何確保它的確如此? (截至目前,我正在關閉並重新開啓會議,每當程序醒來並進行檢查)。

  • +1

    你有提交嗎?一些代碼通常有助於澄清你在做什麼。請發佈清晰展示您的問題的**最小**代碼片段。 – 2010-08-23 17:20:29

    回答

    1

    我將結束,每次重開會議的過程中覺醒,並做了檢查

    的SQLAlchemy不會喜歡這個工作。會話中跟蹤更改。

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

    someobjSession內部緩存。當您執行someobj.attr = val時,它會標記與someobj關聯的會話中的更改。

    因此,如果您從某個session1中拉出object1,然後關閉了session1,則object1不再與任何會話關聯,也不會跟蹤。

    最好的解決辦法是在變化犯右:

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

    否則,你將不得不管理自己的對象緩存並在每次檢查這些文件全部合併。