使用Python MySQL.connector成功插入后,MySQL数据丢失

使用Python MySQL.connector成功插入后,MySQL数据丢失,python,mysql,python-3.x,mysql-python,faker,Python,Mysql,Python 3.x,Mysql Python,Faker,我正在使用pythonmysql.connector进行一些数据库操作。我的数据库表结构如下所示: 我使用Faker包(fake factory 0.5.0)运行python脚本,以填充此数据库表。插入后,我运行一个查询以验证数据是否正确存储到表中。python脚本显示所有插入的数据,并以退出代码0结束 但当我通过phpMyadmin浏览该表时,它不会显示插入的行。这些插入的数据在下一次运行后不会持久存在 这是我的密码: import mysql.connector from faker im

我正在使用
pythonmysql.connector
进行一些数据库操作。我的数据库表结构如下所示:

我使用
Faker包(fake factory 0.5.0)
运行
python脚本
,以填充此数据库表。插入后,我运行一个查询以验证数据是否正确存储到表中。python脚本显示所有插入的数据,并以退出代码0结束

但当我通过
phpMyadmin
浏览该表时,它不会显示插入的行。这些插入的数据在下一次运行后不会持久存在

这是我的密码:

import mysql.connector
from faker import Faker

fake = Faker()

cnx = mysql.connector.connect(user='root', password='001',
                              host='127.0.0.1',
                              database='smf')
cursor = cnx.cursor()

for i in range(1, 5):
    query = "insert into user " + "(userid, name) values("+ str(i) + ", '" + fake.name() + "')"
    cursor.execute(query)

query = "select * from user"
cursor.execute(query)

for (x) in cursor:
    print ("name = " + format(x))

cnx.close()

调用第一个
游标后,您应该有一个
cnx.commit
。执行(查询)
commit()
函数允许永久保存数据。

默认情况下
Connector/Python
关闭
autocommit
,MySQL 5.5及更高版本使用事务性InnoDB表,因此有必要使用连接的
commit()
方法来提交更改。还可以使用rollback()方法回滚


因此,将
cnx.commit()
命令放在
cursor.execute(query)
之后可以解决您的问题

您是否需要在cursor.execute(query)命令之后有一个cnx.commit()。需要一个
cnx.commit()
当返回的名称值包含一个引号时,这将导致INSERT查询出错。(SQL文本中包含的潜在不安全值必须转义。更好的方法是使用带绑定占位符的准备语句。)