Fehlerbehebung bei MySQL-Einfügevorgängen in Python
In Python kann die Verwendung der MySQL-API zur Interaktion mit einer MySQL-Datenbank beim Einfügen von Datensätzen auf Hindernisse stoßen. Dieser Artikel befasst sich mit einem solchen Problem, bei dem Datensätze trotz scheinbar korrekter Implementierung nicht eingefügt werden können.
Der bereitgestellte Code stellt eine Verbindung zur Datenbank her und versucht, einen Datensatz in die Tabelle „Dokumente“ einzufügen. Der Einfügevorgang schlägt jedoch fehl. Um dieses Problem zu lösen, ist es wichtig, die Bedeutung von Datenbanktransaktionen zu verstehen.
In MySQL werden Änderungen an der Datenbank durch Transaktionen verwaltet. Eine Transaktion beginnt, wenn eine Verbindung hergestellt wird, und endet, wenn die Verbindung geschlossen wird oder wenn explizit ein Commit- oder Rollback-Vorgang aufgerufen wird. Alle während einer Transaktion an der Datenbank vorgenommenen Änderungen sind erst dann dauerhaft, wenn die Transaktion festgeschrieben wird.
Im bereitgestellten Code wird der Einfügevorgang erfolgreich ausgeführt, aber die Änderungen werden nicht in der Datenbank festgeschrieben, bevor die Verbindung geschlossen wird (mit db.close()). Ohne Commit der Transaktion wird der Einfügevorgang verworfen, sobald die Verbindung geschlossen wird.
Um dieses Problem zu beheben und sicherzustellen, dass der Einfügevorgang erfolgreich ist, sollten Sie einen Aufruf von db.commit() einschließen, bevor Sie die Datenbankverbindung schließen . Durch diese Aktion wird die Transaktion festgeschrieben, wodurch der eingefügte Datensatz in der Datenbank dauerhaft bleibt.
Hier ist der geänderte Code, der die Festschreibungsoperation enthält:
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()
Durch die Einbindung des db.commit()-Aufrufs werden die während der Transaktion vorgenommenen Änderungen, einschließlich des Einfügevorgangs, in die Datenbank übernommen und werden dauerhaft.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3