FRBの金利データをRSSから抜き出してみる-SQLite3との接続
前回までの記事で、とりあえずFRBのRSSからデータを取得する工程は一段落した。
そこで、今回はこのデータをDBに保存することで今後のデータ利用の幅を増やして行きたいと思う。
また、更新が完了したところまでをGit-Hubにcommitした。
作業
データ構造の定義
その前に、RDBのデータ構造を定義していきたい。
今の所、データの形は次のようになっている。
date DATE,
FFRate FLOAT,
M1 FLOAT,
M3 FLOAT,
M6 FLOAT,
Y1 FLOAT,
Y2 FLOAT,
Y3 FLOAT,
Y5 FLOAT,
Y10 FLOAT,
Y20 FLOAT,
Y30 FLOAT
最初はIDをふろうかと思ったが、最大でも一日に一回しかデータを取らないし、金融データは連番IDで検索をかけるよりも日付で検索がかけられたほうが便利なので、主キーは日付にした。
また、データは分離したほうがいいかと思ったがまとめておいても特に差し障りがないため、以上の構造で問題ないだろう。
と、思っていたが、やはりデータは一つ一つ分離されていたほうが都合が良さそうだ。
作業
SQLiteによる実装
さて、これをプログラムに落とし込むと、こうなった。なお、保存先は外付けHDDだ。
import sqlite3 as sql
dbpath="H:\Data\yieldcurve.db"
conn=sql.connect(dbpath)
cur=conn.cursor()
""
cur.executescript('''
CREATE TABLE IF NOT EXISTS yieldCurve(
ID INTEGER PRIMARY KEY,
date DATE,
FFRate FLOAT,
M1 FLOAT,
M3 FLOAT,
M6 FLOAT,
Y1 FLOAT,
Y2 FLOAT,
Y3 FLOAT,
Y5 FLOAT,
Y10 FLOAT,
Y20 FLOAT,
Y30 FLOAT
)
''')
""
conn.commit()
cur=conn.cursor()
data=['2018-06-06', 1.7, 1.76, 1.93, 2.08, 2.23, 2.4, 2.54, 2.68, 2.83, 2.91, 3.0]
cur.execute(
"INSERT INTO yieldCurve(date,FFRate,M1,M3,M6,Y1,Y2,Y3,Y5,Y10,Y20,Y30) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)",
data)
conn.commit()
cur=conn.cursor()
cur.execute("SELECT * FROM yieldCurve")
list=cur.fetchall()
for i in list:
print(i)
(1, '2018-06-03', 1.7, 1.76, 1.93, 2.08, 2.23, 2.4, 2.54, 2.68, 2.83, 2.91, 3.0)
これでOKだろう。
GitHubへの投稿
せっかくなのでGitHubにも投稿してみた。
VisualStudioをつかうとかなり簡単に投稿できる。
まとめ
これで、データベースを用いることができるようになり、今後データを活用する幅が広がった。
ただ、今回は仮の保存先として外付けHDDを使ったが、毎日駆動することを考えると信頼性に乏しいように思える。今後クローラーとして動かしていくにあたっては、仮想サーバーの活用などが必要になってくるだろう。
次は、今回作ったモジュールを活かしてデータの取得から保存までを行うクローラーを作っていきたい。
と思っていたが、先にデータベースに接続するモジュールを作ろうと思う。
Author And Source
この問題について(FRBの金利データをRSSから抜き出してみる-SQLite3との接続), 我々は、より多くの情報をここで見つけました https://qiita.com/heat_exchange/items/f2869061a4669809a197著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .