1
rockivy 2015-10-26 10:25:50 +08:00
关注
借楼主宝地 , 顺便问一下 : 一个很简单的 flask + sqlalchemy 应用(无页面, 访问一个 url 返回 json 串), 在 view 代码的最开始初始化 sqlalchemy session, 供下面的所有 url route 共同使用, 这种写法是否合适? |
2
shajiquan 2015-10-26 10:32:28 +08:00
试试 db.session.flush()
|
3
wayslog 2015-10-26 10:51:31 +08:00
看样子是有主键生成策略的,那么你可以试一下 flush
|
4
ipconfiger 2015-10-26 11:01:49 +08:00
先 flush 一下就对了
|
6
shajiquan 2015-10-26 11:28:38 +08:00 1
|
10
thomaspaine 2015-10-26 12:38:06 +08:00
@rockivy 推荐只用一个 session 吧,官方文档貌似有说
|
12
shajiquan 2015-10-26 13:00:28 +08:00
@rockivy 可以创建一个 session poll ,然后每个 request 时去 poll 里取一个。或者, flask.before_request 时创建一个 session , flask.after_request 关闭此 session 。
|
13
rockivy 2015-10-26 13:25:29 +08:00
@thomaspaine 目前的做法就是在 view 的顶部初始化一个 session, 下
面所有的 url route 中, 数据库的交互都使用了这个 session. |
14
rockivy 2015-10-26 13:26:58 +08:00
@shajiquan before 和 after request 中创建和关闭 session 的开销大吗?
这个 session 背后是否有个隐藏的数据库连接池支撑呢? |
15
shajiquan 2015-10-26 14:43:55 +08:00
@rockivy 有开销,但还好,就普通的连接而已,你未必会在每个 request 里有大量的事务吧?如果你配置了连接池就会有,反之就没有。
|
18
shajiquan 2015-10-26 15:15:28 +08:00
@rockivy 下面两个链接供参考, SA 官方文档:
Contextual/Thread-local Sessions — SQLAlchemy 1.0 Documentation http://docs.sqlalchemy.org/en/rel_1_0/orm/contextual.html Session Basics — SQLAlchemy 1.0 Documentation http://docs.sqlalchemy.org/en/rel_1_0/orm/session_basics.html |
21
tuteng 2015-10-29 18:54:56 +08:00
今天用到了
|