根据要求拆除sqlalchemy连接时,这是当前的代码:
def init_request():
engine = craete_engine(url)
session = sessionmaker(bind=engine, autoflush=False)
def teardown():
session.close()
engine.dispose()
即使在session.close()之后,应该调用engine.dispose()吗? 我不知道session.close()是否真的意味着拆卸数据库连接。 但是关于engine.dispose(),这个配置只是连接池而不是连接(写在文件上) http://docs.sqlalchemy.org/en/latest/core/connections.html
答案 0 :(得分:1)
关闭会话将删除所有连接资源并将其返回池中,请参阅here。
close()方法发出expunge_all(),并释放任何 事务/连接资源。何时返回连接 连接池,事务状态也会回滚。
如果您没有做任何额外的事情,create_engine
将建立一个连接池,请参阅here。
在大多数情况下,create_engine()函数返回的引擎具有 集成的QueuePool,预先配置合理的池 默认值。
如果你想在会话结束后释放连接(顺便说一下,我想知道为什么?),我建议你禁用池化(相同的链接,下面几段);这样你每次都避免创建引擎。
使用NullPool禁用池:
from sqlalchemy.pool import NullPool
engine = create_engine(
'postgresql+psycopg2://scott:tiger@localhost/test',
poolclass=NullPool)