【问题标题】:How to use cx_Oracle session pool with Flask gracefuly?如何优雅地使用带有 Flask 的 cx_Oracle 会话池?
【发布时间】:2018-07-09 02:38:18
【问题描述】:

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

1) 我需要释放连接才能显式轮询吗?

2) 如何优雅地实现 poll 获取和释放?

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)

【问题讨论】:

    标签: python flask cx-oracle


    【解决方案1】:

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

    【讨论】:

    • 谢谢,对我很有帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-27
    • 2016-06-06
    • 2017-01-02
    • 2013-01-04
    • 1970-01-01
    • 2019-01-28
    相关资源
    最近更新 更多