時,如何回滾一個PostgreSQL連接我使用CherryPy的運行的API,並使用thread_data到PostgreSQL的光標附加到每個線程。使用CherryPy的
def connect_pg(thread_index):
cherrypy.thread_data.pgdb = connect(**cherrypy.config['pgargs'])
dict_cur = cherrypy.thread_data.pgdb.cursor(cursor_factory=psycopg2.extras.DictCursor)
dict_cur.close()
然後創建使用
cherrypy.thread_data.pgdb.cursor(cursor_factory=psycopg2.extras.DictCursor)
偶爾錯誤請求可以由光標,這導致錯誤消息
InternalError: current transaction is aborted, commands ignored until end of transaction block
對此的標準解決方案是做回滾(http://initd.org/psycopg/docs/faq.html)。
然而,回退是一種連接方法,而不是一個光標方法。
有什麼好的方法來處理這個錯誤使用cherrpy的thread_data什麼時候?
我想你想爲此創建一個CherryPy工具。您可能還想使用SQLAlchemy ORM。下面是SQLAlchemy的CherryPy的工具的例子:https://github.com/open-craft-guild/blueberrypy/blob/75ccae2/src/blueberrypy/tools.py#L102-L155 – webKnjaZ