Menyelesaikan masalah Operasi Masukkan MySQL MySQL
Dalam Python, menggunakan API MySQL untuk berinteraksi dengan pangkalan data MySQL, memasukkan rekod boleh menghadapi halangan. Artikel ini menangani satu isu sedemikian di mana rekod gagal disisipkan walaupun pelaksanaannya kelihatan betul.
Kod yang disediakan mewujudkan sambungan ke pangkalan data dan cuba memasukkan rekod ke dalam jadual 'dokumen'. Walau bagaimanapun, operasi sisipan gagal. Untuk menyelesaikan isu ini, adalah penting untuk memahami kepentingan transaksi pangkalan data.
Dalam MySQL, perubahan pada pangkalan data diuruskan melalui transaksi. Transaksi bermula apabila sambungan diwujudkan dan berakhir apabila sambungan ditutup atau apabila operasi komit atau rollback dipanggil secara eksplisit. Sebarang perubahan yang dibuat pada pangkalan data semasa transaksi tidak kekal sehingga transaksi dilakukan.
Dalam kod yang disediakan, operasi sisipan dilaksanakan dengan jayanya, tetapi perubahan tidak dilakukan pada pangkalan data sebelum sambungan ditutup (menggunakan db.close()). Tanpa melakukan transaksi, operasi sisipan dibuang sebaik sahaja sambungan ditutup.
Untuk menyelesaikan isu ini dan memastikan operasi sisipan berjaya, anda harus memasukkan panggilan ke db.commit() sebelum menutup sambungan pangkalan data . Tindakan ini melakukan transaksi, menjadikan rekod yang dimasukkan berterusan dalam pangkalan data.
Berikut ialah kod diubah suai yang termasuk operasi komit:
<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>
Dengan memasukkan panggilan db.commit(), perubahan yang dibuat semasa transaksi, termasuk operasi sisipan, komited kepada pangkalan data dan menjadi kekal.
Atas ialah kandungan terperinci Mengapa Sisipan MySQL Python Saya Tidak Berfungsi?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!