Приветствую
Познакомился недавно с добавлением данных в БД MySQL через Python.
Вот что делаю:
import mysql.connector
dbconfig = {
'host': 'XXX',
'user': 'XXX',
'password': 'XXX',
'database': 'XXX',
}
connection = mysql.connector.connect(**dbconfig)
cursor = connection.cursor()
cursor.execute('INSERT INTO site_content (pagetitle) VALUES ("pagetitle")')
cursor.execute('SELECT MAX(id) FROM site_content')
print(cursor.fetchall())
По логике в таблице БД ничего меняться вообще не должно без
connection.commit()
, но меняется. Подтверждения сохранения данных нет. Открываю таблицу, смотрю данные их нет, но есть одно маленькое "но", сейчас поясню на упрощенном примере.
В таблице есть поле
`id` int(10) unsigned NOT NULL AUTO_INCREMENT
. Если я выполню описанный выше код 10 раз, то вывод
print(cursor.fetchall())
с каждым новым проходом будет выводить ID на единицу больше — если в первом проходе ID был равен 5, то к десятому проходу он будет равен 15 (логично).
Данные в таблицу фактически не добавляются, но где-то в недрах БД код в примере увеличивает поле ID. Посмотрел информацию в БД и заметил, что поле AUTO_INCREMENT с каждым выполнение кода увеличивается на единицу.
Почему так происходит и как этого можно избежать?