ホームページ >データベース >mysql チュートリアル >私の Python コードが CSV データを MySQL データベースに挿入しないのはなぜですか?
Python で CSV データを MySQL にロードする
このコード スニペットは、CSV データを MySQL データベース テーブルにロードしようとします。ただし、ユーザーはテーブルに何も挿入されないという問題に遭遇しています。
このコードは、csv モジュールと MySQLdb モジュールを使用して CSV ファイルを読み取り、そのデータを testcsv という名前の MySQL テーブルに挿入します。 CSV ファイルには、名前、クラス、マークの 3 つの列があることが想定されています。
コードを実行すると、ユーザーはエラー メッセージを報告しませんが、テーブルは空のままです。この問題を解決するには、データベースへの変更をコミットするという重要なステップがコードに欠落しています。
MySQL では、新しいレコードの挿入など、データベースに加えられた変更は、コミットされるまで永続的ではありません。デフォルトでは、MySQL は自動コミット モードで動作します。これは、各ステートメントが自動的にコミットされることを意味します。ただし、トランザクションの処理時など、特定の状況では、変更を明示的にコミットする必要があります。
提供されたコードでは、データの各行を挿入した後に次の行が欠落しています:
mydb.commit()
この行を追加すると、各 INSERT ステートメントによる変更がデータベースに確実にコミットされます。その結果、データは testcsv テーブルに正常に挿入されます。更新されたコードは次のようになります。
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"
各挿入操作の後に変更をコミットすることで、ユーザーはデータが MySQL テーブルに永続的に保存されることを保証できます。
以上が私の Python コードが CSV データを MySQL データベースに挿入しないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。