データベースの設計

いただいてきた日足データのフォーマット


2006/01/04,1802,1,883,885,878,885,2543000
左から日付、銘柄コード、市場区分(1=東証1部)、始値、高値、安値、終値出来高の順に並んでいる。まずはこのデータを格納するSQLiteのデータベースを作ることになる。ここでPythonならではのSQL操作モジュール、SQLObjectを華麗に参考サイトと首っ引きで操る。

SQLObjectとは

日本語ドキュメントはこちら。解説するほど熟達していないので、ともかく下記偉い人のサイトをどうぞ…

と、ともかくプログラム


class stockPrice(SQLObject):
date = DateCol()
code = IntCol()
market = IntCol()
stPrice = FloatCol()
hiPrice = FloatCol()
loPrice = FloatCol()
fnPrice = FloatCol()
dekiDaka = FloatCol()
これがMySQLで言うところのCREATE TABLE stockPrice(date date,code INTEGER【以下略】に相当するもの。SQL文の代わりにクラスを定義し、最後にstockPrice.createTable()とやるとテーブルができる。リスト全文は以下の通り。


# -*- coding: shift_jis -*-
from sqlobject import *
rootDir = '/Users/*****/Desktop/kabu/

  • テーブル定義


class stockPrice(SQLObject):
date = DateCol()
code = IntCol()
market = IntCol()
stPrice = FloatCol()
hiPrice = FloatCol()
loPrice = FloatCol()
fnPrice = FloatCol()
dekiDaka = FloatCol()

  • データベースへの接続関数


def connectDb():
connection_string = 'sqlite://' + rootDir + 'data.db'
connection = connectionForURI(connection_string)
sqlhub.processConnection = connection

  • テーブル作成関数


def initDb():
stockPrice.createTable()

  • メインルーチン


if __name__ == '__main__':
connectDb()
initDb()