Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/313.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何优雅地将cx_Oracle会话池与Flask一起使用?_Python_Flask_Cx Oracle - Fatal编程技术网

Python 如何优雅地将cx_Oracle会话池与Flask一起使用?

Python 如何优雅地将cx_Oracle会话池与Flask一起使用?,python,flask,cx-oracle,Python,Flask,Cx Oracle,我是Python和Flask的新手,我使用Oracle,在学习Flask教程时,我编写了如下代码,但它闻起来很难闻,请帮我回答这些问题,非常感谢 1) 是否需要释放连接以显式轮询 2) 如何优雅地实现轮询获取和释放 def get_dbpool(): if not hasattr(g, 'db_pool'): g.dbPool = connect_db() return g.dbPool @app.teardown_appcontext def close_db(error):

我是Python和Flask的新手,我使用Oracle,在学习Flask教程时,我编写了如下代码,但它闻起来很难闻,请帮我回答这些问题,非常感谢

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

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)

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

谢谢,对我真的很有帮助!