Yahooファイナンスの株価を取得してみる その2

前回、株価のヒストリカルデータを銘柄コード別にファイルに落とすところまでできました。このままでは使いづらいのでリレーショナルDBに入れることにします。

ただ、この動作しているマシンがRaspberryPIなので、データベースを入れるというような暴挙はできません。そこで、組み込みきらしくSQLiteを使うことにします。

  • schema
$ sqlite3 stock.db 
SQLite version 3.7.13 2012-07-17 17:46:21
Enter ".help" for instructions
Enter SQL statements terminated with a ";"
sqlite> .schema
CREATE TABLE histDaily(
				date text,
				open real,
				high real,
				low	real,
				close real,
				volume real,
				adj_close real,
				code text
);
CREATE UNIQUE INDEX idx_histDaily on histDaily(code,date);
sqlite> 
  • hist_import.py
#!/bin/env python
# coding:utf-8
import sqlite3
import sys

def import_data(file):
	con=sqlite3.connect("stock.db",isolation_level=None)
	sql=u"insert into histDaily values(?,?,?,?,?,?,?,?)"
	for line in open(file,'r'):
		ay=line.split('\t')
		con.execute(sql,(ay[0],ay[1],ay[2],ay[3],ay[4],ay[5],ay[6],ay[7]))
	con.close()


if __name__ == '__main__':
	print sys.argv[1]
	import_data(sys.argv[1])
  • hist_imprt.sh
#!/bin/sh

codes=`ls data/*.txt|grep -v master`
for code in $codes;do
	echo $code
	python hist_import.py $code
done

これで動かしてみたのですがちょっとおそいです。というか丸一日動かして1000銘柄も取り込めていない。。。

後ほどチューニングすることにします