PythonスクリプトからMySQLのDBにCSVのデータを挿入しよう
今回はPythonスクリプトでCSV(Comma Separated Values/カンマ区切り値列)ファイルを読み込み、MySQLのDBにデータを挿入してみましょう。
CSVファイルの読み込みには、CSVモジュールを使います。
CSVモジュールのインポート
CSVモジュールのインポートは、以下の通りです。
import csv
CSVファイルの読み込み
CSVファイルの読み込みは、reader()関数を使います。
ファイルオブジェクト名は、open()関数で作成したオブジェクトです。
なお、open()関数の詳細は、こちらの記事を参照してください。
csv.reader("ファイルオブジェクト名", オプション)
csv.reader()関数のオプションには、以下の種類があります。
オプション名 | 内容 |
delimiter | フィールド間を分割するのに用いられる文字。デフォルトはカンマ(',') |
doublequote | フィールド内に現れたクォート文字がその文字自身の場合、どのようにクォートするかを指定。Trueの場合、文字は二重化される。Falseの場合、エスケープ文字はクォート文字の前に置かれる。デフォルトはTrue |
escapechar | エスケープ文字は、それに続く文字の特別な意味を取り除きます。デフォルトはNoneで、エスケープは行わない |
quotechar | delimiterやquotecharといった特殊文字を含むか、改行文字を含むフィールドをクォートする際に用いられる文字。デフォルトはダブルクォーテーション('"') |
skipinitialspace | Trueの場合、delimiterの直後に続く空白は無視される。デフォルトはFalse |
strict | Trueの場合、不正なCSV入力に対してエラーを送出する。デフォルトはFalse |
CSVファイルを読み込んでデータを挿入するプログラム
CSVファイルを読み込んで、MySQLのDBにデータを挿入するプログラムは、以下のようになります。
データを挿入するテーブルは、第7回の記事で作成したものを使います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
### インポート import csv import mysql.connector ### ファイルオープン file = open("mysql10-1.csv", "r") ### ファイル読み込み members = csv.reader(file) ### DB接続 cnx = mysql.connector.connect(host='192.168.11.10', user='user1', password='password1', database='db1') ### カーソル作成 cursor = cnx.cursor() ### INSERT文作成 sql = "INSERT INTO tb2 (name, lang, math, engl) VALUES (%s, %s, %s, %s)" ### データ挿入 for value in members: ### データ挿入実行 cursor.execute(sql, value) ### コミット cnx.commit() ### カーソルクローズ cursor.close() ### DB切断 cnx.close() ### ファイルクローズ file.close() |
今回使ったCSVファイルは、以下の通りです。
1 2 3 4 5 6 7 8 9 10 |
町田龍男,67,76,82 大田敬三,20,48,42 渋谷睦洋,38,6,89 中野博,89,59,86 豊島辰典,44,78,38 北法子,66,64,29 荒川真理子,34,70,55 板橋佳代子,71,86,52 足立智栄美,63,58,86 立川弘美,0,49,27 |
前回作成したプログラムでテーブルの内容を確認すると、以下のようになります。