下記記事の続きとなります。
sqlalchemyとpandasを利用してDB(sqlite)へ格納します。
DBは作成されている事を前提とします。
import pandas as pd
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
import settings
if name == 'main':
Base = declarative_base()
engine = create_engine(f'sqlite:///{settings.db_name}?check_same_thread=False')
file_name = 'data/USD_JPY.csv' df = pd.read_csv(file_name) df['日付け'] = pd.to_datetime(df['日付け'], format='%Y年%m月%d日') df['出来高'] = 0
df.to_sql(name='USD_JPY_1D', con=engine, if_exists='append', index=False, chunksize=5000)
これで実行するだけです。
{settings.db_name}は各自環境に置き換えてください。
settingsから呼び出して文字列を埋め込んでいるだけです。
すでに既存のテーブルが存在している場合は”name=”を省くとできます。
df.to_sql('USD_JPY_1D', con=engine, if_exists='append', index=False, chunksize=5000)
DB側を確認しましょう。
$ sqlite3 db_name.sql
sqlite> select * from USD_JPY_1D limit 5;
2020-10-30 00:00:00.000000|104.64|104.64|104.75|104.12|0
2020-10-29 00:00:00.000000|104.61|104.36|104.74|104.03|0
2020-10-28 00:00:00.000000|104.29|104.42|104.57|104.11|0
2020-10-27 00:00:00.000000|104.4|104.83|104.9|104.39|0
2020-10-26 00:00:00.000000|104.82|104.75|105.07|104.64|0
ついでに何件あるか見てみましょう。
sqlite> select count(*) from USD_JPY_1D;
4979
これでDBへの格納終わりです。
コメント