У меня есть функция, которая загружает данные в базу данных, которую я хочу перебрать в списке биржевых тикеров, а затем перебрать как конечные точки биржи, которые используются для стандартизированного соглашения об именах, так и список функций, которые извлекают данные из API.
self.stock_tickers = ['MMM', 'ABT', 'ABBV', 'ABMD', 'ACN', 'ATVI', 'ADBE', 'AMD', 'AAP', 'AES']
self.stock_endpoints = ['one_year_daily', 'two_year_daily',
'one_year_weekly', 'two_year_weekly', 'three_year_weekly',
'one_month_daily', 'two_month_daily', 'three_month_daily', 'six_month_daily',
'one_day_minute', 'two_day_minute', 'three_day_minute']
self.functions = (StockEndpoints.one_year_daily(),
StockEndpoints.two_year_daily(),
StockEndpoints.one_year_weekly(),
StockEndpoints.two_year_weekly(),
StockEndpoints.three_year_weekly(),
StockEndpoints.one_month_daily(),
StockEndpoints.two_month_daily(),
StockEndpoints.three_month_daily(),
StockEndpoints.six_month_daily(),
StockEndpoints.one_day_min(),
StockEndpoints.two_day_min(),
StockEndpoints.three_day_min())
StockEndpoints () - это функция в отдельном классе, для которой требуется параметр (tckr) или биржевой тикер.
Вот код, который у меня пока есть :
def fill_tables(self):
# Inserts data into their respective column
try:
for tckr in self.stock_tickers:
for endpoint in self.stock_endpoints:
query = '''INSERT INTO {}_{} (symbol, date_time, close_price, high, low, open_price, volume)
VALUES (%s, %s, %s, %s, %s, %s, %s)'''.format(tckr, endpoint)
values = PERFORM FUNCTION THAT MATCHES THE ENDPOINT BEING ITERATED THROUGH.
EXAMPLE: THE CURRENT ENDPOINT IS 'one_year_daily' THEREFORE I WANT TO RUN THE
FUNCTION 'StockEndpoints.one_year_daily(tckr)'
# Execute the sql commands to insert data
self.cursor.executemany(query, values)
self.conn.commit()
print(self.cursor.rowcount, 'records inserted into {}_{}'.format(tckr, endpoint))
except Error as e:
print(e)
Основная проблема, с которой я столкнулся, заключается в том, что в первой итерации, скажем, конечная точка - one_year_daily, а затем функция StockEndpoints.one_year_daily (tckr), а затем я хочу go через другую итерацию этот биржевой тикер, но использующий конечную точку two_year_daily и функцию StockEndpoints.two_year_daily (tckr) и проходящий через текущий tckr, проходящий итерацию.
Я знаю, что могу сделать FOR l oop с биржевыми биржами, а затем еще один FOR l oop для конечных точек акций, но тогда я понятия не имею, как выполнить итерацию Также выполните функции и убедитесь, что они соответствуют конечной точке.
Если это поможет, вот функция
StockEndpoints.one_year_daily (tckr)
def one_year_daily(self, tckr):
self.TDSession.login()
quote_data = self.TDSession.get_price_history(symbol=tckr,
periodType='year',
period=1,
frequencyType='daily',
frequency=1,
needExtendedHoursData='false')
sql_data = [(tckr,
quote_data['candles']['datetime'],
quote_data['candles']['close'],
quote_data['candles']['high'],
quote_data['candles']['low'],
quote_data['candles']['open'],
quote_data['candles']['volume'])
for x, quote_data['candles'] in enumerate(quote_data['candles'])]
return sql_data
Дайте мне знать если у вас есть какие-либо вопросы или я могу добавить или уточнить, спасибо!