Данные MySQL теряются после успешной вставки с Python mysql.connector
Я использую python mysql.connector
для какой-то операции с базой данных. Моя таблица базы данных выглядит следующим образом:
Я создаю python script
с Faker 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()
2 ответа
По умолчанию Connector/Python
витки autocommit
выключен, а MySQL 5.5 и более поздние версии используют транзакционные таблицы InnoDB, поэтому необходимо commit
Ваши изменения с использованием соединения commit()
метод. Вы также можете выполнить откат, используя метод rollback().
Итак, положив cnx.commit()
команда после cursor.execute(query)
решает вашу проблему
Вы должны иметь cnx.commit
после вызова первого cursor.execute(query)
, commit()
Функция позволяет сохранять данные постоянно.