flask 使用 sqlalchemy 或者 peewee 这样的 orm 时,每次 request 都要对数据库进行访问吗?

2016-01-30 15:09:45 +08:00
 dsp2138

在 app 中使用 orm 连接数据库,是不是每个请求都要对数据库进行访问?
怎么做到在需要访问的时候访问,不需要的不连接数据库!
比方对静态页面操作是不需要读取数据这样?
在 flask 中 before_request 方法具体的使用环境是怎么样的?
在 peewee 这样的 orm 中怎么使用 before_request ?还是不需要了呢?
要是每个请求都对数据库进行连接好像很浪费!
具体怎么优化,谢谢

4998 次点击
所在节点    Flask
5 条回复
janxin
2016-01-30 15:18:51 +08:00
每次请求创建数据库请求肯定是消耗特别大的方法,官方的例子也是使用了 if db is None 判断是不是 DB 存在然后进行连接。

当然简单的方法是使用 flask-sqlalchemy 或者 flask-peewee 。

before_request 用于做一些针对每个请求都要做的事情,当然也可筛选一部分出来。
loading
2016-01-30 15:29:44 +08:00
你可以把 before_request 清空,把连接数据库的代码写成其他函数,需要连接的地方加一下(建议使用装饰器),这样做只是比较方便,减少代码。
其实 before_request 也就是装饰器吧?
22too
2016-01-30 15:44:36 +08:00
首先你要了解这个 before_request 这个什么意思,
还有一个 after_request ,这个两个是对应的。
一个是为了连接数据库,一个是为了关闭连接。

你可以不用这个 before_request ,仅仅在需要使用数据库的连接 url 上,使用连接,连接完了关闭。

当然可能你还是需要 redis 。
dsp2138
2016-01-30 15:55:45 +08:00
@janxin playhouse 是否和 flask-peewee 有同等功效呢
wellsc
2016-01-30 21:22:49 +08:00
@dsp2138 Playhouse 是 Peewee 的子集。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/254447

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX