如何使用Flask gracefuly使用cx_Oracle会话池?

时间:2018-01-30 09:06:01

标签: python flask cx-oracle

我是Python和Flask的新手,我使用Oracle,在学习Flask教程时,我的代码如下,但它闻起来很糟糕,请帮我解决这些问题,非常感谢!

1)我是否需要明确发布与poll的连接?

2)如何优雅地实现民意调查获取和释放?

def get_dbpool():
if not hasattr(g, 'db_pool'):
    g.dbPool = connect_db()
return g.dbPool

@app.teardown_appcontext
def close_db(error):
    if hasattr(g, 'db_pool'):
        g.dbPool.close()

@app.route('/')
def hello_world():
    db = get_dbpool().acquire()
    cursor=db.cursor()
    sql=''
    cursor.execute(sql)
    rows = cursor.fetchall()
    cursor.close()
    get_dbpool().release(db)
    return json.jsonify(combines=rows)

1 个答案:

答案 0 :(得分:2)

除非您打算继续处理一段时间并且不再需要连接,否则无需显式释放与池的连接。当连接超出范围(函数结束)时,cx_Oracle会自动将连接释放回池,前提是您尚未实现对连接的循环引用!在这种情况下,您必须等到垃圾收集执行。希望能回答你的问题!