我正在我的服务器上使用Flask + SQLAlchemy (DB是Postgres),我想知道连接池是如何发生的。我知道默认情况下它是启用的,池大小为5,但我不知道我的代码是否触发它。
假设我使用默认的烧瓶SQLalchemy桥:
db = SQLAlchemy(app)然后使用该对象放置数据库调用,如
db.session.query(......)烧瓶-sqlalchemy如何管理场景后面的连接池?每次我访问db.session时,它是否会获得一个新的会话?什么时候这个对象返回到池(假设我没有将它存储在局部变量中)?
编写代码以最大化并发+性能的正确模式是什么?如果我在一个串行方法中多次访问DB,那么每次使用db.session是个好主意吗?
我无法找到这种方式的文档,所以我不知道场景背后发生了什么(代码可以工作,但会扩展吗?)
谢谢!
发布于 2014-12-12 17:25:16
您可以使用事件注册- http://docs.sqlalchemy.org/en/latest/core/event.html#event-registration有许多不同的事件类型可以监视,checkout,checkin,connect等。- http://docs.sqlalchemy.org/en/latest/core/events.html
下面是在建立新连接时打印a的文档的一个基本示例。
from sqlalchemy.event import listen
from sqlalchemy.pool import Pool
def my_on_connect(dbapi_con, connection_record):
print "New DBAPI connection:", dbapi_con
listen(Pool, 'connect', my_on_connect)https://stackoverflow.com/questions/27423718
复制相似问题