Python csvから読み込みDBへ格納する

NO IMAGE

下記記事の続きとなります。

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への格納終わりです。

programmingカテゴリの最新記事