Memuatkan Data CSV ke dalam MySQL dalam Python
Coretan kod ini cuba memuatkan data CSV ke dalam jadual pangkalan data MySQL. Walau bagaimanapun, pengguna menghadapi isu di mana tiada apa-apa yang dimasukkan ke dalam jadual.
Kod menggunakan modul csv dan MySQLdb untuk membaca fail CSV dan memasukkan datanya ke dalam jadual MySQL yang dipanggil testcsv. Fail CSV dijangka mempunyai tiga lajur: nama, kelas dan tanda.
Setelah melaksanakan kod, pengguna tidak melaporkan mesej ralat, tetapi jadual kekal kosong. Untuk menyelesaikan isu ini, kod itu tiada langkah penting: melakukan perubahan pada pangkalan data.
Dalam MySQL, perubahan yang dibuat pada pangkalan data, seperti memasukkan rekod baharu, tidak kekal sehingga ia dilakukan. Secara lalai, MySQL beroperasi dalam mod autocommit, yang bermaksud bahawa setiap pernyataan dilakukan secara automatik. Walau bagaimanapun, dalam situasi tertentu, seperti semasa mengendalikan urus niaga, adalah perlu untuk melakukan perubahan secara eksplisit.
Dalam kod yang disediakan, baris berikut tiada selepas memasukkan setiap baris data:
mydb.commit()
Menambah baris ini akan memastikan bahawa perubahan yang dibuat oleh setiap pernyataan INSERT adalah komited kepada pangkalan data. Akibatnya, data akan berjaya dimasukkan ke dalam jadual testcsv. Kod yang dikemas kini sepatutnya kelihatan seperti ini:
import csv import MySQLdb mydb = MySQLdb.connect(host='localhost', user='root', passwd='', db='mydb') cursor = mydb.cursor() csv_data = csv.reader(file('students.csv')) for row in csv_data: cursor.execute('INSERT INTO testcsv(names, \ classes, mark )' \ 'VALUES("%s", "%s", "%s")', row) mydb.commit() #close the connection to the database. cursor.close() print "Done"
Dengan melakukan perubahan selepas setiap operasi sisipan, pengguna boleh memastikan bahawa data disimpan secara kekal dalam jadual MySQL.
Atas ialah kandungan terperinci Mengapa Kod Python Saya Tidak Memasukkan Data CSV ke dalam Pangkalan Data MySQL Saya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!