Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python sqlalchemy会话无法识别mysql数据库中的更改(由其他进程完成)_Python_Mysql_Database_Sqlalchemy - Fatal编程技术网

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应用程序
问题是,主进程会话似乎并没有注册在该会话之外对数据库所做的更改。你如何确保它做到这一点?(到目前为止,每次进程醒来并进行检查时,我都会关闭并重新打开会话)

每次进程醒来并进行检查时,我都会关闭并重新打开会话

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

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()

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

是否执行提交?一些代码通常有助于澄清您正在做什么。请张贴清楚地说明您的问题的最小代码片段。您是否进行了提交?一些代码通常有助于澄清您正在做什么。请张贴清楚说明您的问题的最小代码片段。