首页 > 解决方案 > MySQL 表为空,即使它已通过 Python 填充

问题描述

我编写了一个 python 脚本来通过 excel 数据填充 MySQL 表。在 Python 脚本结束时,我打印出表格的内容:

mycursor.execute("SELECT * FROM Cities")

rows=mycursor.fetchall()

for r in rows:
    print r

我得到了正确的结果:

(1, u'Muenchen', 2.0, 3.32, 1, 1)
(2, u'Augsburg', 0.7, 1.008, 1, 1)
(3, u'Frankfurt', 1.1, 1.694, 1, 2)
(4, u'Wiesbaden', 0.3, 0.405, 1, 2)

但是当我通过 MySQL Workbench 打开表时,它是空的。通过常规终端,我得到相同的结果:

mysql> SELECT * FROM Cities;
Empty set (0.00 sec)

有什么问题?

标签: pythonmysql

解决方案


你需要COMMIT改变

MySQLConnection.commit() 方法

此方法向 MySQL 服务器发送 COMMIT 语句,提交当前事务。由于默认情况下,Connector/Python 不会自动提交,因此在每个修改使用事务存储引擎的表的数据的事务之后调用此方法很重要。

>>> cursor.execute("INSERT INTO employees (first_name) VALUES (%s)", ('Jane'))
>>> cnx.commit()
>>> cnx.close()

推荐阅读