gpt4 book ai didi

python - sqlalchemy session 无法识别 mysql 数据库中的更改(由其他进程完成)

转载 作者:行者123 更新时间:2023-11-29 01:00:38 25 4
gpt4 key购买 nike

应用程序包括:

  • 主进程(python+sqlalchemy)定期检查数据库(睡得最多当时的)
  • 写入数据库的子进程
  • 写入数据库的网络应用

问题是主进程 session 似乎没有在该 session 外完成的数据库中注册更改。如何确保它确实如此? (截至目前,每次进程唤醒并进行检查时,我都会关闭并重新打开 session )。

最佳答案

I am closing and reopening the session every time the process awakes and does its check

SQLAlchemy 不会这样工作。在 session 中跟踪更改。

someobj = Session.query(SomeClass).first()

someobj 放入 Session 内部缓存。当您执行 someobj.attr = val 时,它标记了与 someobj 关联的 Session 中的更改。

因此,如果您从某个 session1 中提取 object1,然后关闭 session1,则 object1 不再与任何 session 相关联,也不会被跟踪。

最好的解决方案是在更改时立即提交:

object1 = newsession.add(object1)
newsession.commit()

否则您将不得不管理自己的对象缓存并在每次检查时合并所有对象。

关于python - sqlalchemy session 无法识别 mysql 数据库中的更改(由其他进程完成),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3549949/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com