我在Python中创建了一个循环,它调用自身来反复检查数据库中的新条目。在第一次执行时,所有受影响的行都显示良好。同时,我向数据库中添加了更多的行。在循环中的下一个查询中,新行不显示。在
这是我的查询循环:
def loop():
global mysqlconfig # username, passwd...
tbd=[] # this is where I save the result
conn = MySQLdb.connect(**mysqlconfig)
conn.autocommit(True)
c = conn.cursor()
c.execute("SELECT id, message FROM tasks WHERE date <= '%s' AND done = 0;" % now.isoformat(' '))
conn.commit()
tbd = c.fetchall()
print tbd
c.close()
conn.close()
time.sleep(5)
loop()
loop()
这是Python插入脚本的SQL部分:
^{pr2}$我试过SQLite,我试过OracleMySQL的连接器,我在Windows和Linux系统上试用了MySQLdb,但都有相同的问题。我查看了很多关于Stackoverflow的线程,这些线程建议在SQL语句(例如one,two,three)之后打开autocommit或使用commit(),我尝试过,但失败了。在
当我用HeidiSQL向数据库添加数据时,它在循环查询中出现,但我不知道为什么会这样。在Linux上用mysql客户机插入的行和Python插入脚本在重新启动循环脚本之前不会显示。在
我不知道是不是我打开了2个连接,每个连接都用它们自己的脚本,但当我处理完所有连接和光标时,我会关闭它们。在
问题可能出在您的变量
now
。我在循环中看不到它正在被重置。在我可能会使用mysql
NOW()
函数:插入数据库的时间似乎是将来的时间。我不认为你的问题出在你的数据库连接上,我认为这与你正在做的查询有关。在
相关问题 更多 >
编程相关推荐