«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Почему мои вставки Python MySQL не работают?

Почему мои вставки Python MySQL не работают?

Опубликовано 18 ноября 2024 г.
Просматривать:768

Why Are My Python MySQL Inserts Not Working?

Устранение неполадок операций вставки MySQL в Python

В Python при использовании MySQL API для взаимодействия с базой данных MySQL вставка записей может столкнуться с препятствиями. В этой статье рассматривается одна из таких проблем, когда записи не могут быть вставлены, несмотря на, казалось бы, правильную реализацию.

Приведенный код устанавливает соединение с базой данных и пытается вставить запись в таблицу «документы». Однако операция вставки завершается неудачей. Чтобы решить эту проблему, очень важно понимать важность транзакций базы данных.

В MySQL изменения в базе данных управляются посредством транзакций. Транзакция начинается, когда соединение устанавливается, и заканчивается, когда соединение закрывается или когда явно вызывается операция фиксации или отката. Любые изменения, внесенные в базу данных во время транзакции, не являются постоянными до тех пор, пока транзакция не будет зафиксирована.

В предоставленном коде операция вставки выполняется успешно, но изменения не фиксируются в базе данных до закрытия соединения. (используя db.close()). Без фиксации транзакции операция вставки отменяется после закрытия соединения.

Чтобы решить эту проблему и гарантировать успешность операции вставки, вам следует включить вызов db.commit() перед закрытием соединения с базой данных. . Это действие фиксирует транзакцию, делая вставленную запись постоянной в базе данных.

Вот измененный код, включающий операцию фиксации:

db = MySQLdb.connect("localhost", "root", "padmaramulu", "pdfsearch")
cursor = db.cursor()
# cursor.execute("""CREATE TABLE IF NOT EXISTS documents (docid INT NOT NULL ,PRIMARY KEY(docid),docname CHAR(30)) engine=innodb""")
temp = "hello"; number = 2;
cursor.execute('insert into documents(docid,docname) values("%d","%s")' % (number, temp))
db.commit()
db.close()

При включении вызова db.commit() изменения, сделанные во время транзакции, включая операцию вставки, фиксируются в базе данных и становятся постоянными.

Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3