最近我开始使用 SQLAlchemy
,试图理解在一个 web-application
中 connection pool
和 session
的工作方式。
我正在使用 flask
构建一个 API
。
__init__.py
engine = create_engine('mysql://username:password@localhost/my_database')
DBSession = sessionmaker(bind=engine)
views.py
@app.route('/books', methods = ['GET'])
def getBooks():
session = DBSession()
returnedBooks = session.query(BOOK).all()
session.close()
return something...
1) 首先,如果我没有明确关闭session
对象,那么在request
处理完成后它会自动关闭吗?
2) 当我的应用程序收到多个requests
时,所有创建的多个session
对象是否都链接到在__init__.py
文件中创建的单个engine
对象?
3) 在view.py
中创建的session
对象是connection pool
持有的connections
吗?如果是的话,并且这些未被关闭,那么新的连接是否必须为随后的请求而创建?
4) 我应该在某个时候使用dispose()
吗?