V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
dsp2138
V2EX  ›  Flask

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

  •  1
     
  •   dsp2138 · 2016-01-30 15:09:45 +08:00 · 5009 次点击
    这是一个创建于 3218 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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

    当然可能你还是需要 redis 。
    dsp2138
        4
    dsp2138  
    OP
       2016-01-30 15:55:45 +08:00
    @janxin playhouse 是否和 flask-peewee 有同等功效呢
    wellsc
        5
    wellsc  
       2016-01-30 21:22:49 +08:00 via Android   ❤️ 1
    @dsp2138 Playhouse 是 Peewee 的子集。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3043 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 12:55 · PVG 20:55 · LAX 04:55 · JFK 07:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.