Данные 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() Функция позволяет сохранять данные постоянно.

Другие вопросы по тегам