1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

FRBの金利データをRSSから抜き出してみる-SQLite3との接続

Last updated at Posted at 2018-06-16

 前回までの記事で、とりあえず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だ。

database.py
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)
output
(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を使ったが、毎日駆動することを考えると信頼性に乏しいように思える。今後クローラーとして動かしていくにあたっては、仮想サーバーの活用などが必要になってくるだろう。
~~ 次は、今回作ったモジュールを活かしてデータの取得から保存までを行うクローラーを作っていきたい。~~
と思っていたが、先にデータベースに接続するモジュールを作ろうと思う。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?