2

我正在使用python mysql.connector一些数据库操作。我的数据库表结构是这样的:

在此处输入图像描述

我运行python scriptwithFaker Package(fake-factory 0.5.0)来填充这个数据库表。插入后,我运行查询以验证数据是否正确存储到表中。python脚本显示所有插入的数据并以exit code 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()
4

2 回答 2

5

默认情况下Connector/Python关闭autocommit,并且 MySQL 5.5 和更高版本使用事务 InnoDB 表,因此有必要使用连接的方法进行commit更改。commit()您也可以使用 rollback() 方法进行回滚。

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

于 2015-05-04T15:10:17.970 回答
2

cnx.commit在调用第一个之后,您应该有一个cursor.execute(query)。该commit()功能允许数据永久保存。

于 2015-05-04T14:56:50.643 回答