50 lines
1.5 KiB
Python
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() |