Пополнение прогнозов акций в базе данных django с помощью моделей
У меня есть код, который выводит прогнозы акций. Я пытаюсь понять, как заносить прогнозы в базу данных. Каждый раз, когда код выполняется, он должен модифицировать базу данных новыми прогнозами.
Вот мой 'predictions.py':
import yfinance as yf
import numpy as np # Processing data as arrays
import pandas as pd # Used to create a dataframe that holds all data
from keras.models import load_model # Used to load existing models
import datetime
import joblib
def models_loader(folder, name, days = [1, 5, 30]):
model = []
for i in days:
model.append(load_model(folder+'/'+ name + '_' + str(i) + '.h5'))
return model
days = [1,5,14,30,90] #Day intervals
scaler = joblib.load('scaler.sav')
models = models_loader('ML Model','Model', days) #Load models
has_Run = False
companies = ['TSLA', 'AAPL','SIRI','GGB','PLUG']
while True:
print("Has started")
time = datetime.datetime.today()
schedule = datetime.time(17,0,0)
if time.hour == schedule.hour and has_Run==False: #change second time hour to schedule hour
last = datetime.date.today()
td = datetime.timedelta(100)
start = last - td
for symbols in companies:
print(symbols)
predINV= []
data = yf.download(symbols,start = start, end = last)
data = data.filter(['Close'])
if len(data.index) > 59:
INPUT = data.values
INPUT = INPUT[-60:]
scaled_input = scaler.fit_transform(INPUT)
scaled_input = np.reshape(scaled_input, (-1,60,1))
for i in range(len(days)):
pred = models[i].predict(scaled_input)
predINV.append(scaler.inverse_transform(pred))
predINV[i] = predINV[i].round(decimals = 2)
print(f'Day {days[i]}: {predINV[i]}')
del data
has_Run = True
elif has_Run==True and time.hour != schedule.hour:
has_Run=False
(Это то, что я хочу заполнить в БД. Он должен заполнить все данные и при каждом запуске кода изменять строки с новыми значениями). Вывод 'predictions.py' выглядит следующим образом:
Has started
TSLA
[*********************100%***********************] 1 of 1 completed
Day 1: [[836.88]]
Day 5: [[836.88]]
Day 14: [[836.07]]
Day 30: [[835.21]]
Day 90: [[827.17]]
AAPL
[*********************100%***********************] 1 of 1 completed
Day 1: [[163.32]]
Day 5: [[163.32]]
Day 14: [[163.69]]
Day 30: [[163.57]]
Day 90: [[163.04]]
SIRI
[*********************100%***********************] 1 of 1 completed
Day 1: [[6.17]]
Day 5: [[6.17]]
Day 14: [[6.16]]
Day 30: [[6.15]]
Day 90: [[6.12]]
....
Это мой 'models.py':
class Predictions(models.Model):
'''Predictions Table to maintain stock predictions'''
symbol = models.CharField(default='', max_length=1)
day1 = models.DecimalField(max_digits=10, decimal_places=2, default=0.00)
day5 = models.DecimalField(max_digits=10, decimal_places=2, default=0.00)
day14 = models.DecimalField(max_digits=10, decimal_places=2, default=0.00)
day30 = models.DecimalField(max_digits=10, decimal_places=2, default=0.00)
day90 = models.DecimalField(max_digits=10, decimal_places=2, default=0.00)