这个想法是在值发生变化时显示一个消息框。query
变量的COUNT(*)
当前为0。当程序在无限循环中运行以检查是否有任何更改时,会创建一个新的请求,计数现在应该是1。但是,这并没有发生。控制台继续打印No new Tickets
。
当后台发生变化时,为什么query (row)
变量没有更新?
如果我终止程序并重新运行它,它将获得新值。
while True:
#if this count increases by 1 send a notification in python that there is a new ticket
query = """
SELECT COUNT(*)#q.id, q.Name, q.Description, t.Created, t.Subject
FROM
Queues as q
LEFT JOIN Tickets as t
on q.id = t.Queue
LEFT JOIN Users as u
on u.id = t.Owner
WHERE
q.id = 1 AND u.id = 10 AND t.Status = 'New'
AND
STR_TO_DATE(t.Created, "%Y-%m-%d") = CURDATE();
"""
cursor = conn.cursor()
cursor.execute(query)
row = cursor.fetchone()
#Debug for printing the current count
print row[0]
#if the current count of unowned and status ="new" tickets is greater than 0 send a notification.
if(row[0] > 0):
ctypes.windll.user32.MessageBoxW(0, u"New Ticket Available", u"NEW TICKET", 1)
else:
print "No new Tickets"
time.sleep(5)
发布于 2019-03-01 04:05:53
https://dev.mysql.com/doc/connector-python/en/connector-python-api-mysqlconnection-commit.html
...by默认连接器/Python不会自动提交,因此在修改使用事务性存储引擎的表的数据的每个事务之后调用此方法非常重要。
此外,如果您的事务隔离级别是默认的(REPEATABLE-READ),那么对同一事务的后续查询将始终得到相同的结果,即使在此期间新数据一直在更改。
您有两个选择:
在开始事务之前,在loop.
set tx_isolation='REPEATABLE-READ';
开始时,conn.commit()
来获取数据库的新快照,这样长时间运行的事务就可以看到并发更改automatically.的结果
https://stackoverflow.com/questions/54932432
复制相似问题