Устранение неполадок операций вставки 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