finance-api/manage.py

50 lines
1.5 KiB
Python

import csv
from datetime import datetime
from database import Database
from model.ticker import Ticker
database = Database()
def load_database(chunk_size=100000):
database.drop_tables()
database.create_tables()
with open("./data/output/tickers.csv") as file:
try:
rows = []
reader = csv.DictReader(file)
total = 0
for row in reader:
ticker = Ticker(
date=datetime.strptime(row.get("date"), "%Y-%m-%d").date(),
symbol=row.get("symbol"),
open=row.get("open"),
high=row.get("high"),
low=row.get("low"),
close=row.get("close"),
volume=row.get("volume")
)
rows.append(ticker)
if len(rows) >= chunk_size:
database.session.bulk_save_objects(rows)
database.session.commit()
total += chunk_size
print(f"{total} rows inserted")
rows = []
# Insert any remaining rows.
if rows:
database.session.bulk_save_objects(rows)
database.session.commit()
total += len(rows)
print(f"{total} inserted")
except Exception as e:
import pprint
pprint.pprint(e)
if __name__ == "__main__":
load_database()