我有一个使用 MySQL 作为后端的Bottle.py (0.10.11) 和SQLAlchemy (0.7.9)的周末项目。
我有很多“MySQL 服务器已经消失”,并将其深入到这样一个事实,即当我不使用我的程序时,一些会话会在夜间保持打开状态。
现在我可以看到 MySQL 会话在哪里打开,但我不知道应该如何进行。
这就是我在路由器页面 web.py 中的内容
[...]
db = create_engine('mysql://USER:PASSWORD@DATABASE', poolclass=NullPool)
session = scoped_session(sessionmaker(bind=db))
@route("/")
links = session.query(Link)
session.close()
return bottle.template("index", links=links)
在我看来 index.tpl
[...]
%for link in links:
<div class="link">
<a class="link" href="{{link.url}}">{{link.title}}</a>
%for tag in link.tags:
<a href="/tag/{{tag.text}}" class="tag">{{tag.text}}</a>
%end
<a href="/edit/{{link.id}}">edit</a>
</div>
%end
[...]
如果我使用session.query(Link).all()
而不是session.query(Link)
MySQL 会话正确关闭,但我无法从 ORM 因素中受益。
如何关闭所有会话?
我究竟做错了什么 ?