1. MySQL を Python で操作するためのライブラリ
Python で MySQL のデータを操作したい。
MySQL - PythonInfo Wiki によると、以下の 3 つのライブラリが挙げられていた。
とりあえず、一番上を使ってみよう。
2. MySQL for Python のダウンロードとインストール
をダウンロードしてインストール。
\Lib\site-packages\ にインストールされる。
3. Python Database API Specification
MySQLdb User's Guide によると、
If you want to write applications which are portable across databases, use MySQLdb, and avoid using this module directly. _mysql provides an interface which mostly implements the MySQL C API.
_mysql と MySQLdb の二つのインターフェイスがある。データベース間で、統一したインターフェイスを持つことを目的にされた MySQLdb は、
を実装している。
Some examples を参考にしながら試すことにした。
4. 例
郵便番号のデータ を MySQL に登録してみる。
CSV ファイルのデータ形式は、郵便番号データファイルの形式等 を参考にした。このデータから、以下の項目を抽出する。
- 郵便番号(7桁)
- 都道府県名
- 市区町村名
- 町域名
方法
まずは、MySQL Administrator を使って、以下のような yuubinbangou テーブルを作成。
コードを以下に示す。
- 最初にテーブルのデータを削除し、
- CSV ファイルから 100 件分のデータを登録した後、
- 登録したデータ 10 件分を表示するようにした。
(郵便番号のデータは C: 直下に配置。)
import MySQLdb, codecs # DB に接続 db = MySQLdb.connect(user="test", passwd="test", db="test", charset="utf8") # カーソルの取得 c = db.cursor() # DELETE c.execute("delete from yuubinbangou") # INSERT (最初から 100 件分を登録) FILE_PATH = ur"C:\KEN_ALL.CSV" f = codecs.open(FILE_PATH, "r", "shift_jis") for i in range(0,100): row = [x[1:-1] for x in f.readline().split(',')] c.execute(u"""INSERT INTO yuubinbangou(bangou, ken, si, tyou) VALUES ('%s', '%s', '%s', '%s')""" % (row[2], row[6], row[7], row[8])) f.close() # COMMIT db.commit() # SELECT c.execute("SELECT * FROM yuubinbangou") # 最初から 10 件を表示 it = iter(c) for i in range(0,10): for col in it.next(): print col, print
コードについて
データベースに接続する connect メソッドの引数に、
charset="utf8"
を追加しないと、UnicodeEncodeError が投げられた。
その他、以下を参照。
- 簡単なテキスト処理 (4) - ファイルからの読み込み
- 簡単なテキスト処理 : 文字列の前につける `ur’
- 文字列中の変数をフォーマットして置き換える : 文字列に変数を埋め込む方法
- 3.9 ファイルオブジェクト : ファイルの操作
「MySQL で文字化け - 後から文字コードを変えるとき」のようなミスをしないように。 (+_+)
0コメント:
コメントを投稿