首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何通过Flask gracefuly使用cx_Oracle会话池?

如何通过Flask gracefuly使用cx_Oracle会话池?
EN

Stack Overflow用户
提问于 2018-01-30 17:06:01
回答 1查看 1.7K关注 0票数 1

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

1)是否需要显式释放连接以轮询?

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

代码语言:javascript
复制
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)
EN

回答 1

Stack Overflow用户

发布于 2018-01-31 23:18:03

没有必要显式释放到池的连接,除非您打算保持处理一段时间,并且不再需要该连接。当连接超出作用域(函数结束)时,cx_Oracle会自动将连接释放回池,当然,前提是您没有实现对该连接的循环引用!在这种情况下,您必须等待,直到执行垃圾收集。希望这能回答你的问题!

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48517547

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档