python SQL查询插入显示空行

时间:2016-09-11 17:46:22

标签: python mysql python-2.7 mysql-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没有回复。有人可以指出我正确的方向。似乎无法弄清楚这个bug。感谢

1 个答案:

答案 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)