Приветствую
Познакомился недавно с добавлением данных в БД 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 с каждым выполнение кода увеличивается на единицу.
Почему так происходит и как этого можно избежать?