yfinanceで取得した情報をpostgresに登録する

Python
スポンサーリンク

皆さんこんにちは!SEふじたけです。

今回はyfinanceで取得した株価をPostgreSQLに登録していきます。

[AI]BOTさん
[AI]BOTさん

ついに株価をデータベースに登録するんだね!

今まではAPIの解説だけでしたが、取得した株価をPostgreSQLに保存していきます!

スポンサーリンク

pipでPostgreSQL操作用のライブラリをインストール

pythonでPostgreSQLを操作する為には、psycopg2というライブラリをインストールする必要があります。

psycopg2はpipでインストールする事が可能です。

pip install psycopg2

これで準備が整いました。非常に簡単ですね!

psycopg2の詳細は以下サイトから確認できます。

psycopg2
psycopg2 - Python-PostgreSQL Database Adapter

PythonでPostgreSQLに接続する

まずはPostgreSQLに接続しないといけません。

Pythonで接続するには以下のコードで簡単に接続できます。

import psycopg2
connect = psycopg2.connect(host="localhost", database="dbnm", user="postgres", password="postgres")

PythonでPostgresに登録する

今回DBをテスト的に登録する為に以下のようにテーブルを作成しました。

CREATE TABLE public.d_stockstrage (
	stock_code varchar(4) NOT NULL,
	stock_date timestamp NULL,
	start_val numeric(10, 2) NULL,
	end_val numeric(10, 2) NULL,
	high_val numeric(10, 2) NULL,
	low_val numeric(10, 2) NULL,
	volume numeric(12) NULL,


);

作成したテーブルに追加するコードは以下の通りです。

#Databaseに登録する
insquery = "insert into d_stockstrage (stock_code, stock_name, stock_date, start_val, end_val, high_val, low_val) values %s"
params = []
params.append(['6758', 'ソニー', 'A', dt, open, close, high, low])
execute_values(cur, insquery, params)
connect.commit()
connect.close()

登録する各値は後で入れていきます。

insert文で登録対象の内容を選択したあと、「value」後に値の形式を指定します。

今回は全て文字列で指定できるため、全て「%s」で指定します。

登録する型が全て同一であれば1つ記入すれば良いので上のコードになります。

psycopg2 ではパラメータ配列を一括でinsertする事ができます。

パラメータ配列を追加する為には、appendを用いて追加していきます。

Pythonにyfinanceのデータを登録する

前記事ではyfinanceからデータを取得しました。

前記事と本記事の内容を活用してyfinanceの内容をPostgresに登録します。

from datetime import datetime
from psycopg2.extras import execute_values
import yfinance as yfin
import pandas as pd
import psycopg2
connect = psycopg2.connect(host="localhost", database="StockDB", user="postgres", password="postgres")

dframe = yfin.download("6758.T", period="2y")
print(dframe)
#Databaseに登録する
insquery = "insert into d_stockstrage (stock_code, stock_name, stock_date, start_val, end_val, high_val, low_val) values %s"
params = []

for idx, row in dframe.iterrows():
    cur = connect.cursor()
    print(row.name)
    #dtstr = row.name.str
    try:
        valstr = ""
        open = round(row['Open'], 2)
        close = round(row['Close'], 2)
        high = round(row['High'], 2)
        low = round(row['Low'], 2)
        dt = row.name.strftime('%Y/%m/%d')
        params.append(['6758', 'ソニー', dt, open, close, high, low])
    except psycopg2.Error as ex:
        ex.pgerror
try:
    execute_values(cur, insquery, params)
    cur.close()
except psycopg2.Error as ex:
    ex.pgerror
connect.commit()
connect.close()

上記のコードではソニー(6758.T)二年分の株価をPostgresに登録しております。

yfinanceで株価を取得した際に、小数点以下の桁数が多かったので四捨五入して2桁で表示しております。

最後に

今回はyfinanceで取得した株価をPostgresに登録する事について記事にしました。

ここまでくれば株価の取得は出来るようになったと言えます。

あとは予測するだけです!

[AI]BOTさん
[AI]BOTさん

予測が一番難しいんだけど。。。

株価の解析や予測方法はひとまず置いといて、取得はできた事からPythonと株も身近になってきました。

次はストップ高やストップ安の取得方法や、yfinanceの1回で取得できる限度数を記事にできればと思っています。

最後まで読んで頂きありがとうございました。

コメント

タイトルとURLをコピーしました