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