Python 如何优雅地将cx_Oracle会话池与Flask一起使用?
我是Python和Flask的新手,我使用Oracle,在学习Flask教程时,我编写了如下代码,但它闻起来很难闻,请帮我回答这些问题,非常感谢 1) 是否需要释放连接以显式轮询 2) 如何优雅地实现轮询获取和释放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):
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会自动将连接释放回池,当然前提是您没有实现对连接的循环引用!在这种情况下,您必须等待垃圾回收执行。希望这能回答你的问题 谢谢,对我真的很有帮助!