我正在为我的服务器使用Flask + SQLAlchemy(DB是Postgres),并且想知道连接池是如何发生的。我知道它默认启用,池大小为5,但我不知道我的代码是否会触发它。
假设我使用默认的烧瓶SQLalchemy桥:
db = SQLAlchemy(app)
然后使用该对象发出数据库调用,如
db.session.query(......)
flask-sqlalchemy如何管理场景后面的连接池?每次访问db.session时它是否会获取新会话?该对象何时返回到池中(假设我不将其存储在本地变量中)?
编写代码以最大化并发性+性能的正确模式是什么?如果我在一个串行方法中多次访问数据库,每次使用db.session是个好主意吗?
我无法找到这种方式的文档,所以我不知道幕后发生了什么(代码有效,但会扩展吗?)
谢谢!
答案 0 :(得分:1)
您可以使用活动注册 - http://docs.sqlalchemy.org/en/latest/core/event.html#event-registration
可以监控许多不同的事件类型,checkout
,checkin
,connect
等...... - http://docs.sqlalchemy.org/en/latest/core/events.html
以下是有关在建立新连接时打印文档的基本示例。
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)