You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
|
import pandas as pd
|
|
|
|
|
|
import json
|
|
|
|
|
|
import yfinance as yf
|
|
|
|
|
|
import numpy as np
|
|
|
|
|
|
import psycopg2
|
|
|
|
|
|
from psycopg2.extras import execute_values
|
|
|
|
|
|
from tqdm import tqdm
|
|
|
|
|
|
with open('/flask/data_init/assets_tw.json') as f:
|
|
|
|
|
|
data_tw = json.load(f)
|
|
|
|
|
|
|
|
|
|
|
|
#SQL setting
|
|
|
|
|
|
SQL_CONFIG = dict(database="portfolio_platform", user='postgres', password='password', host='db',port ='5432')
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# TW Stocks
|
|
|
|
|
|
conn = psycopg2.connect(**SQL_CONFIG)
|
|
|
|
|
|
cursor = conn.cursor()
|
|
|
|
|
|
cursor.execute("SELECT COUNT(*) FROM stock_price_tw;")
|
|
|
|
|
|
row_count = cursor.fetchone()[0]
|
|
|
|
|
|
if row_count <= 0 :
|
|
|
|
|
|
for ticker in tqdm(data_tw):
|
|
|
|
|
|
df = yf.download(ticker, start="2013-1-1", progress=False)
|
|
|
|
|
|
value =[(ticker, df.index[i], df['Close'][i]) for i in range(len(df))]
|
|
|
|
|
|
with conn:
|
|
|
|
|
|
with conn.cursor(cursor_factory=psycopg2.extras.RealDictCursor) as curs:
|
|
|
|
|
|
sql = "insert into stock_price_tw (ticker, date, price) values %s"
|
|
|
|
|
|
execute_values(curs, sql, value)
|
|
|
|
|
|
print("Finish initialize")
|
|
|
|
|
|
else:
|
|
|
|
|
|
print("DB already have data")
|