我在Python中做了一個循環,它調用自己重複檢查數據庫中的新條目。在第一次執行時,所有受影響的行都顯示正常。同時,我在數據庫中添加更多行。在我的循環中的下一個查詢中,新行不顯示。在SQL INSERT&「commit」後,Python和SQL沒有出現新行
這是我的查詢循環:
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部分:
conn = MySQLdb.connect(**mysqlconfig)
conn.autocommit(1)
c = conn.cursor()
c.execute("INSERT INTO tasks (date, message) VALUES ('{0}', '{1}');".format("2012-10-28 23:50", "test"))
conn.commit()
id = c.lastrowid
c.close()
conn.close()
我嘗試SQLite的,我試過甲骨文MySQL的連接器,我試過MySQLdb的在Windows和Linux系統上,都有同樣的問題。我查看了Stackoverflow上的許多線程,這些線程建議打開自動提交或在SQL語句(例如one,two,three)之後使用commit(),我試過並失敗了。
當我使用HeidiSQL將數據添加到數據庫時,它顯示在循環查詢中,但我不知道爲什麼會這樣。在Linux重新啓動我的循環腳本之前,Linux和MySQL插入腳本中插入的行不會顯示。
我不知道這是否是我打開2個連接的事實,每個連接都在自己的腳本中,但是當我完成它們時關閉每個連接和每個光標。
現在我覺得很蠢。這實際上起作用。非常感謝你! – chrki
很容易將注意力集中在一個問題上,而忽略了明顯的答案。我已經做了比我記得更多的時間了。 –