2016-09-11 50 views
0

我想在SQL中執行插入查詢。它表示它成功,但在數據庫中沒有記錄。這裏是我的代碼python SQL查詢插入顯示空行

conn = MySQLdb.connect("localhost",self.user,"",self.db) 
cursor = conn.cursor() 
id_val = 123456; 
path_val = "/homes/error.path" 
host_val = "123.23.45.64" 
time_val = 7 
cursor.execute("INSERT INTO success (id,path,hostname,time_elapsed) VALUES (%s,%s,%s,%s)", (id_val, path_val,host_val,time_val)) 

print "query executed" 
rows = cursor.fetchall() 
print rows 

這個輸出以下

query executed 
() 

它給了我沒有錯誤,但該數據庫似乎是空的。我在MySQL控制檯中嘗試了我的SQL查詢。執行以下命令。

INSERT INTO success (id,path,hostname,time_elapsed) 
VALUES (1,'sometext','hosttext',4); 

這工作正常,因爲我可以看到數據庫已填充。

mysql> SELECT * FROM success LIMIT 5; 
+----+----------+----------+--------------+ 
| id | path  | hostname | time_elapsed | 
+----+----------+----------+--------------+ 
| 1 | sometext | hosttext |   4 | 
+----+----------+----------+--------------+ 

所以我猜SQL查詢命令是正確的。不知道爲什麼我的cursor.execute沒有響應。有人可以請我指出正確的方向。似乎無法弄清楚這個錯誤。感謝

回答

1

您發送您的插入記錄後,您應該提交更改的數據庫:

cursor.execute("INSERT INTO success (id,path,hostname,time_elapsed) VALUES (%s,%s,%s,%s)", (id_val, path_val,host_val,time_val)) 
conn.commit() 

當你想讀取數據,因爲你通過你的解釋做了你應該首先把你的查詢。

所以你獲取數據之前,執行SELECT命令:

cursor.execute("SELECT * FROM success") 
rows = cursor.fetchall() 
print rows 

如果你想這樣做Python的:

cursor.execute("SELECT * FROM success") 
for row in cursor: 
    print(row) 
+0

偉大及其working..thanks了很多。 – Shadid