Python 在不同用户之间更改参考底图表时,MySQL视图不会更新

Python 在不同用户之间更改参考底图表时,MySQL视图不会更新,python,mysql,mysql-python,Python,Mysql,Mysql Python,我已经找过了,但似乎什么也找不到 情况如下: t1=表1 t2=表2 v=表1和表2合并视图 一,。用户1已登录到数据库。是否从v中选择* 二,。用户2登录到同一数据库,并插入t1值1、2、3 三,。用户1从v中选择另一个*;在注销并重新登录之前,用户1无法看到用户2插入的行 看起来视图没有在会话间同步?如何使用户1能够看到插入内容 仅供参考,我正在使用python和mysqldb。用户2可以简单地提交他们的事务,而不是注销和重新登录 MySQL InnoDB表使用事务,需要在一个或多个SQL语

我已经找过了,但似乎什么也找不到

情况如下:

t1=表1 t2=表2 v=表1和表2合并视图 一,。用户1已登录到数据库。是否从v中选择*

二,。用户2登录到同一数据库,并插入t1值1、2、3

三,。用户1从v中选择另一个*;在注销并重新登录之前,用户1无法看到用户2插入的行

看起来视图没有在会话间同步?如何使用户1能够看到插入内容


仅供参考,我正在使用python和mysqldb。

用户2可以简单地提交他们的事务,而不是注销和重新登录

MySQL InnoDB表使用事务,需要在一个或多个SQL语句之前先开始,然后提交或回滚,从而导致所有更新/插入/删除发生或不发生。但是有一个特性,如果没有显式发出,它会自动开始,当连接关闭时,它会自动提交。这就是为什么在其他用户关闭连接后您会看到更改

您确实应该养成显式开始和提交事务的习惯,但还有另一种方法:set connection.autocommit=True,这将导致每个sql更新/插入/删除都包装在其自己的隐式事务中,从而产生您最初期望的行为


不要认为我上面说的完全正确,但它足以解释发生了什么以及如何控制它的基本原理。

它与使用MySQL UPDATE命令有关吗?

我在想更新v的思路,其中v是表的视图。更新v给出了无效语法。运行COMMIT似乎可行,我将把它标记为答案,但你能解释一下为什么我必须这样做吗?好的,让我知道我的解释是否足够。谢谢!事实证明,mysql配置中启用了自动提交功能,但从1.2.0开始,MySQLdb默认情况下会禁用自动提交功能,这是DB-API标准PEP-249所要求的。