Python sqlalchemy会话无法识别mysql数据库中的更改(由其他进程完成)
应用程序包括:Python sqlalchemy会话无法识别mysql数据库中的更改(由其他进程完成),python,mysql,database,sqlalchemy,Python,Mysql,Database,Sqlalchemy,应用程序包括: 主要流程(python+sqlalchemy)是 定期检查数据库(睡眠时间最长 (当时) 写入数据库的子进程 写入数据库的web应用程序 问题是,主进程会话似乎并没有注册在该会话之外对数据库所做的更改。你如何确保它做到这一点?(到目前为止,每次进程醒来并进行检查时,我都会关闭并重新打开会话) 每次进程醒来并进行检查时,我都会关闭并重新打开会话 SQLAlchemy不会像这样工作。在会话中跟踪更改 someobj = Session.query(SomeClass).first
- 主要流程(python+sqlalchemy)是 定期检查数据库(睡眠时间最长 (当时)
- 写入数据库的子进程
- 写入数据库的web应用程序
someobj = Session.query(SomeClass).first()
将someobj
放入Session
内部缓存。执行someobj.attr=val
时,它会标记与someobj关联的会话中的更改
因此,如果从某个会话1中提取object1,然后关闭会话1,object1将不再与任何会话关联,也不会被跟踪
最好的解决方案是在更改时立即提交:
object1 = newsession.add(object1)
newsession.commit()
否则,您必须管理自己的对象缓存,并在每次检查时合并所有对象
每次进程醒来并进行检查时,我都会关闭并重新打开会话
SQLAlchemy不会像这样工作。在会话中跟踪更改
someobj = Session.query(SomeClass).first()
将someobj
放入Session
内部缓存。执行someobj.attr=val
时,它会标记与someobj关联的会话中的更改
因此,如果从某个会话1中提取object1,然后关闭会话1,object1将不再与任何会话关联,也不会被跟踪
最好的解决方案是在更改时立即提交:
object1 = newsession.add(object1)
newsession.commit()
否则,您将不得不管理自己的对象缓存,并在每次检查时合并所有对象。是否执行提交?一些代码通常有助于澄清您正在做什么。请张贴清楚地说明您的问题的最小代码片段。您是否进行了提交?一些代码通常有助于澄清您正在做什么。请张贴清楚说明您的问题的最小代码片段。