ホームページ >データベース >mysql チュートリアル >私の Python コードが CSV データを MySQL データベースに挿入しないのはなぜですか?

私の Python コードが CSV データを MySQL データベースに挿入しないのはなぜですか?

Patricia Arquette
Patricia Arquetteオリジナル
2024-11-29 05:27:12817ブラウズ

Why Isn't My Python Code Inserting CSV Data into My MySQL Database?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。