2009年9月28日月曜日

Python + SQLite3 でフィールド名を読み出す方法

 某 HP を Django を使って CMS化しようとしているのだが、データーベースの設計をいい加減 agile にやっているのでテーブルのフィールドがポンポン増える。
 そのたびに新しくデータベースを作り直す(データを入れなおす)のが面倒なので、データ移行ツールを作ることにした。

 言語は練習も兼ねて python。SQLite3 のインターフェースを標準装備しているのでチャチャと...、フィールド名が読めない。PHP では嫌でもついてくるようなのになぜ?

 結局一時間以上探し回って、なんとか出てきた。

import sqlite3

con = sqlite3.connect("ecsite.sqlite")

c = con.cursor()
c.execute(u"select * from item")
print c.description
 実行結果はこんな感じ
C:\Python262\projs\db-test1>python test1.py
(('id', None, None, None, None, None, None), ('item_code', None, None, None, Non
e, None, None), ('item_name', None, None, None, None, None, None), ('item_land_s
q', None, None, None, None, None, None), ('item_land_tubo', None, None, None, No
ne, None, None), ('price', None, None, None, None, None, None), ('start_date', N
one, None, None, None, None, None))
 ちなみに肝は cursor を実行してから execute を実行すること。これが逆だと None しか表示されない。英文の資料では execute しか見つけられず、日本語訳でやっと発見。

 英語読解力はまだまだだ。

0 件のコメント:

コメントを投稿