2014-02-27 91 views
2

目前,我的項目結構是這樣的:處理SQL鍊金術會話。

project-name/libs/__init__.py 
       /module-1 
       /module-2 

我宣佈我的SQLAlchemy會話初始化的.py

engine = create_engine('postgresql+psycopg2://' + configurations.DB_USERNAME + ':' + configurations.DB_PASSWORD + '@' + configurations.DB_HOST +'/' + configurations.DB_NAME,echo=True) 
sm = orm.sessionmaker(bind=engine, autoflush=True, autocommit=False, 
    expire_on_commit=True) 
session = orm.scoped_session(sm) 

然後我用這個會議,無論我需要做一個查詢。

目前,我面對這個問題:

This Session's transaction has been rolled back due to a previous exception during flush. To begin a new transaction with this Session, first issue Session.rollback(). Original exception was: (DataError) invalid input value for enum exchange: "BS1" 

我沒有做這個查詢呢。我改變了我的數據庫,但錯誤仍然存​​在。所以,我認爲會議仍然存在。我試着刷新會話/回滾,但沒有任何幫助。

我的另一個問題是,我從來沒有關閉會議。我如何去實現這個目標? (這是一個網絡應用程序)

回答

0

爲了安全起見,請在每次使用數據庫之前創建一個新的會話,也可以嘗試使用session.rollback()和session捕獲異常。 flush()在finally中。

要解決您的問題,重新啓動mysql服務器

+1

重新啓動我的postgres服務器沒有幫助。 – Hick