鍍金池/ 問答/Python  數據庫/ sqlalchemy session有commit和rollback,為什么還會

sqlalchemy session有commit和rollback,為什么還會報需要rollback呢

長時間不登錄后,會報以下錯誤,但是明明有commit 和rollback,為啥呢?:

File "build/bdist.linux-x86_64/egg/sqlalchemy/engine/base.py", line 1125, in _execute_context

conn = self._revalidate_connection()

File "build/bdist.linux-x86_64/egg/sqlalchemy/engine/base.py", line 427, in _revalidate_connection

"Can't reconnect until invalid "

StatementError: (sqlalchemy.exc.InvalidRequestError) Can't reconnect until invalid transaction is rolled back [SQL: u'SELECT t_test.host AS t_test_host nFROM t_test'] [parameters: [{}]]

代碼:

hostLi = session.query(database.DB_test.host).all()
db_cont = list(set(hostLi))

for item in db_cont:
    match = pattern.match(item[0])
    if match:
       tmpHost = tmpHost + "<option>" + str(item[0]) + "</option>"

hos = Markup(tmpHost)
try:
    session.commit()
except:
    session.rollback()
session.close()
return render_template('test.html', tmpHost =hos)
回答
編輯回答
夢一場

異常捕獲不對應該這樣寫,需要結合第一句你需要查詢的語句一起寫:

try:
    hostLi = session.query(database.DB_test.host).all()
except:
    session.rollback()
2018年7月23日 00:16