SQLiteからデータを取得して、それをExcelに書き出して出力するミニプログラムです。
データベースのデータを分析するためにExcelに書き出したい場合に役に立ちます。
今回はSQLiteからデータを取得するためにsqlite3、Excelへの書き出しにopenpyxlを使います。
SQLiteの記事はこちら
openpyxlの記事はこちら
sqlite3はpythonの標準モジュールですが、openpyxlはインストールする必要があります。pip等を使ってインストールしましょう。
$ pip install openpyxl
また、今回は東京の1ヶ月の平均気温、最高気温、最低気温をテーブルに格納し、それをsqlite3で取得しExcelへ書き出します。
データのサンプルはこちらです。
input.csv
import sqlite3
import openpyxl
workbook = openpyxl.Workbook()
sheet = workbook.active
sheet['A1'].value = '年月日'
sheet['B1'].value = '平均気温'
sheet['C1'].value = '最高気温'
sheet['D1'].value = '最低気温'
db = sqlite3.connect('example.db')
c = db.cursor()
c.execute('SELECT * FROM temperature')
for i, row in enumerate (c):
sheet['A' + str(i+2)].value = row[0] #年月日
sheet['B' + str(i+2)].value = row[1] #平均気温
sheet['C' + str(i+2)].value = row[2] #最高気温
sheet['D' + str(i+2)].value = row[3] #最低気温
c.close()
workbook.save(“output.xlsx")
4行目〜5行目の処理でで新しいExcelのワークブックを作成しています。
Workbook()はワークブックの初期化です。
6〜9行目はExcelの最初の行にヘッダーを記述するための処理です。
openpyxlではsheet[セル番号].valueに値を入れることでそのセルに値を書き出せます。
11行目からはデータベースからデータを取得し、結果をExcelに書き出しています。
まず11行目でexample.dbに接続しています。ここは接続するSQLiteのデータベースファイル名によって異なります。
13行目ではSQLを使ってtemperatureテーブルからデータを全件取得し、結果をc変数に格納しています。
あとは受け取った結果をforでループさせ、sheet[セル番号].valueに一つずつ値を渡しています。
enumerateを使うことでインデックス番号を受け取れるので、それを使ってセル番号を指定できます。
最後に開いたカーソルをクローズし、workbook.save()で内容をoutput.xlsxに出力しています。