Python MySQL-查询被意外缓存

Python MySQL-查询被意外缓存,python,mysql,Python,Mysql,我对MySQL db有一个小问题(因为没有更好的词)。我正在使用Python。 所以我有一个表,其中的行是定期插入的。以1行/秒的频率进行。 我一起运行两个Python脚本。以1行/秒的速度模拟插入的程序。我还关闭了自动提交,并在一些行数之后显式提交,比如10行 另一个脚本是对表的简单“SELECT count(*)…”查询。此查询不显示表当前的行数。它顽固地停留在脚本开始运行时表最初拥有的任何行数上。我甚至尝试过“选择SQL\u NO\u缓存计数(*)…”但没有效果 任何帮助都将不胜感激。我猜

我对MySQL db有一个小问题(因为没有更好的词)。我正在使用Python。 所以我有一个表,其中的行是定期插入的。以1行/秒的频率进行。 我一起运行两个Python脚本。以1行/秒的速度模拟插入的程序。我还关闭了自动提交,并在一些行数之后显式提交,比如10行

另一个脚本是对表的简单“SELECT count(*)…”查询。此查询不显示表当前的行数。它顽固地停留在脚本开始运行时表最初拥有的任何行数上。我甚至尝试过“选择SQL\u NO\u缓存计数(*)…”但没有效果


任何帮助都将不胜感激。

我猜读者或作者(很可能是作者)正在未提交的事务中操作。尝试确保写入程序在每次写入后都在提交,并尝试从读卡器中执行
回滚
,以确保它也不在事务中。

我猜您正在使用INNODB的
可重复读取
隔离模式。尝试将隔离模式设置为
读取提交的

SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED

另一种方法是每次执行
select
查询时启动新事务

如果在读卡器中也关闭了autocommit,则它将在事务中执行读取操作,因此不会看到其他脚本正在执行的写入操作。

如果直接通过mysql控制台查询数据库,是否可以看到插入内容?@learningJava Yes。从MySQL控制台查询数据库时,我可以看到插入的内容。@DhaivatPandya代码本身没有什么特殊的作用。一个脚本只在表中插入行。另一个脚本只是查询表。我同时运行它们。我不知道这是否有帮助,但我向您保证,我在代码中没有做任何特殊的事情。如果您的表是innodb,那么您必须手动提交事务,以便实际发生任何事情。@user1292090如果代码中没有发生任何特殊的事情,您就不需要询问它为什么要做特殊的事情……;)这也是我的怀疑,我确实试过你的解决办法。在开始任何插入之前,我从执行插入的脚本内部执行了此sql语句。我希望这就是你的本意。这并没有解决问题。我仍然无法阅读作者根据我的读者脚本制作的插页。但克内姆的解决方案奏效了。我必须在阅读器中将autocommit设置为true,才能阅读插入内容。在他的回答中,他提到了这种情况发生的原因。非常感谢您的回复!您必须在
select
script:)@KernelM中设置此选项,此选项有效。Python MySQL API会自动将自动提交设置为False。我将autocommit设置为true,它就工作了。谢谢!克内姆对这个问题的解决办法奏效了。如果必须阅读作者正在制作的插入,那么即使在读卡器中,似乎也必须将autocommit设置为true!非常感谢您的回复!