python SQL 查询插入显示空行

python SQL query insert shows empty rows

我正在尝试在 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 没有响应。有人可以指出我正确的方向吗?似乎无法找出错误。谢谢

发送 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)