2016-09-18 53 views
0

使用MySQL连接器/ Python我有一个循环,每2秒钟检查一次更改的值。没有所有的肉,这里是环(打印有用于测试目的:MySQL/Python - 未出现在循环中的已提交更改

try: 
    while True: 
     request = database.get_row(table="states", wherecol="state", whereval="request_from_interface")[0] 
     print(request.value) 
     time.sleep(2) 
except KeyboardInterrupt: 
    pass 
# back to normal operation 

get_row是一个简单的选择查询,并将其返回namedtuple使用fetchall(因此[0]到了最后,它只会如果它是“0”开始,它会一直打印“0”,如果它是“0”开始,它将保持打印“0”即使我去看望并改变它,即使我打开一个新的终端并改变它并提交,我已经尝试将query_cache_size设置为0,但仍然没有运气。我认为这是一个提交问题,如果我改变它并重新连接,我看到了改变,但我不确定是否是wh它在程序中不会改变。有什么想法吗?

编辑:万一它出现,是的我关闭了光标,并抓住每个电话一个新的光标。

+0

这样做。如果你把它放在答案中,我会很乐意接受它。谢谢。 – linus72982

回答

0

InnoDB的默认isolation levelREPEATABLE READ。这意味着后续一致的SELECT语句将读取由事务中第一个语句创建的相同快照。虽然你打开和关闭游标,但你可能是在一个事务内部进行的,所以你一遍又一遍地读取已建立的快照。可以使用ROLLBACKCOMMIT来结束当前事务,以便读取创建快照后提交的值。