2012-05-18 35 views
0

我看到有瓶,SQLAlchemy的一些意外的行爲,我不明白這是怎麼回事:瓶SQLAlchemy的不拾取更改的記錄

如果我讓使用如變更至創紀錄MySQL Workbench或Sequel Pro,正在運行的應用程序(無論是在Apache上的WSGI下運行,還是從命令行運行)都沒有找到變化。如果我通過觸摸WSGI文件或重新加載(命令行)重新加載應用程序,我可以看到更改的記錄。我已經通過在交互式shell中運行all()查詢來驗證這一點,並且它是相同的 - 在我退出shell並重新開始之前不做任何更改。我覺得我錯過了一些非常明顯的東西 - 這是一張單獨的表,沒有聯接等。 - 在2.7.3上運行MySQL 5.5.19和SQLA 0.7.7

+0

這是一個會話問題,不是嗎。呸。 – urschrei

回答

0

你的應用程序的SELECT可能在它自己的內部事務/會話,所以由另一個會話提交的更改(例如MySQL Workbench連接)對於您的SELECT還不可見。您可以通過啓用mysql常規日誌或在create_engine(...)定義中設置'echo:false'來輕鬆驗證它。很有可能你要在SET AUTOCOMMIT = 0模式下啓動你的SQLAlchemy會話,這需要顯式提交或回滾(當你重新啓動/重新加載時,Flask-SQLAlchemy自動爲你做)。嘗試在自動提交= true模式下啓動會話,或者在調用SELECT之前執行顯式提交/回滾。