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:
<code class="python">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()</code>
Durch Einbindung des Aufrufs db.commit() Die während der Transaktion vorgenommenen Änderungen, einschließlich des Einfügevorgangs, werden in die Datenbank übernommen und sind dauerhaft.
Das obige ist der detaillierte Inhalt vonWarum funktionieren meine Python-MySQL-Einfügungen nicht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!