我正在尝试在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
没有回复。有人可以指出我正确的方向。似乎无法弄清楚这个bug。感谢
答案 0 :(得分:1)
发送INSERT记录后,您应该在数据库中提交更改:
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
如果你想做pythonic:
cursor.execute("SELECT * FROM success")
for row in cursor:
print(row)