MySQL 手动修改数据后,使用 Flask-SQLALchemy 需要手动重启 service 数据才会刷新

2015-06-16 15:13:43 +08:00
 zuo

在最近做的一个小项目中,使用了Flask-SQLALchemy ORM来处理应用与数据库之间的连接。暂时没有做管理页面,需要涉及MySQL手动修改某些字段数据!
但是数据修改后,应用上面并没有更新!需要重启Flask服务,有没有临时的解决方案,避免修改字段后重启服务

7752 次点击
所在节点    Python
19 条回复
22too
2015-06-16 19:25:15 +08:00
不懂你说的是什么?你的数据库表字段都改了?你的orm字段不用改吗?改完之后难道不需要重启吗?
realityone
2015-06-16 19:41:01 +08:00
db.session.commit()
或者
SQLALCHEMY_COMMIT_ON_TEARDOWN = True
realityone
2015-06-16 19:45:17 +08:00
@realityone 啊……看错了
我试了下并没有这种情况啊…
是因为有 cache ?
skywatcher
2015-06-16 19:52:44 +08:00
一直在用SqlAlchemy,没出现你说的情况
zuo
2015-06-16 21:10:46 +08:00
@22too update了数据,没有修改字段!需要重启服务,修改的数据才会更新
zuo
2015-06-16 21:13:17 +08:00
@realityone 觉得ORM仅仅是将表与类进行了映射,在MySQL中手动update了数据,应该不会有影响的
zuo
2015-06-16 21:13:47 +08:00
@skywatcher 用的是Flask-SQLALchemy 不知道有没有影响
22too
2015-06-19 21:14:00 +08:00
不知道你怎么用的,所以不知道你的具体问题在哪
theo
2015-07-25 13:46:39 +08:00
我用的是 SQLAlchemy,遇到同样问题。
情况是用两个不同的 Python 服务访问同一个数据库,A 服务执行 add 并 commit 后,数据库中已经能看到新的条目,但 B 服务通过 SQLAlchemy 的 query 无法获取新数据,只有通过原生的 mysql 包才能获取数据。
zuo
2015-07-29 08:48:17 +08:00
@theo 估计是SQLAlchemy工作原理的问题,只要程序设计的足够完善,应该会避免手动更改数据的操作
theo
2015-08-05 01:17:08 +08:00
@zuo 如果同一个数据库被两个不同的应用共享(比如网站的前台和后台管理系统),这就是不可避免的了。
zuo
2015-08-05 22:53:13 +08:00
@theo 可能是我们两人的设计在某个方面都犯了一个致命的错误,身边也没事又大神可以指导!我为这个问题找了好几天Google都没结果,最后不了了之!
caimaoy
2016-04-13 16:32:47 +08:00
我也遇到这个问题了,肯定是打开方法不对
caimaoy
2016-04-13 16:53:05 +08:00
@theo @zuo 你们解决了这个问题了没啊?
zuo
2016-04-15 10:14:40 +08:00
@caimaoy 不了了之了,我也没找到具体的解决方法
zuo
2016-04-15 10:15:51 +08:00
@caimaoy 可以看看这个库 github 上面有吗,有得话提 issue 看看
suzaku
2016-09-09 09:25:57 +08:00
我也遇到了
suzaku
2016-09-09 09:26:40 +08:00
create_engine(config_url, isolation_level="READ UNCOMMITTED")
在 create_engine 的时候,指定 isolation_level
outdoxl
2019-04-04 16:24:26 +08:00
挖坟
查询前先 `db.session.commit()` 将当前 session 对象里的缓存提交(清空缓存),查询时就直接从数据库中查询最新数据。
https://www.cnblogs.com/huchong/p/9258458.html
https://www.jianshu.com/p/c0a8275cce99

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

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

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

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

© 2021 V2EX