def getSymbolData(apiConnector): run = True db_connection = connect_database() while run: symbol = symbolList.get() if symbol == None: print("Breaking") symbolList.put(None) break else: start_time = time.time() db_cursor = db_connection.cursor() print(symbol) ts = apiConnector.getDailyTimeSeries(symbol) if (ts): storeSymbolData(db_cursor, symbol, ts) db_connection.commit() else: print("Error: " + symbol) end_time = time.time() elapsed_time = end_time - start_time
def buildTimeSeriesTable(): db_connection = connect_database() db_cursor = db_connection.cursor() db_cursor.execute("DROP TABLE IF EXISTS timeseries_daily") db_cursor.execute("CREATE TABLE timeseries_daily (" "symbol TEXT, " "date DATE, " "high NUMERIC(10,2), " "low NUMERIC(10,2), " "volume INTEGER, " "open NUMERIC(10,2), " "close NUMERIC(10,2))") disconnect_database(db_cursor, db_connection)
def buildSymbolTable(): db_connection = connect_database() db_cursor = db_connection.cursor() db_cursor.execute("DROP TABLE IF EXISTS symbols") db_cursor.execute("CREATE TABLE symbols (" "symbol TEXT, " "exchange TEXT, " "name TEXT, " "date DATE, " "type TEXT, " "region TEXT, " "currency TEXT)") disconnect_database(db_cursor, db_connection)
def getTimeSeriesData(production): apiConnector = APIConnector(production) db_connection = connect_database() db_cursor = db_connection.cursor() symbolList = getSymbolList(db_cursor) for symbol in symbolList: print(symbol) ts = apiConnector.get5YearTimeSeries(symbol) if (ts): storeSymbolData(db_cursor, symbol, ts) db_connection.commit() else: print("Error: " + symbol)
def similarityWorker(symbol, priceData): db_conn = connect_database() db_cursor = db_conn.cursor() while True: active_symbol = symbolQueue.get() if active_symbol != None: a = priceData[active_symbol] print(active_symbol) b = priceData[symbol] distance = calculateDistance(a, b) data = (active_symbol, symbol, distance) storeSimilarity(db_cursor, data) db_conn.commit() else: symbolQueue.put(None) db_conn.close() break
def getSymbolData(production): apiConnector = APIConnector(production) db_connection = connect_database() db_cursor = db_connection.cursor() #apiResult = apiConnector.getAPIData("/ref-data/symbols") apiResult = apiConnector.getSymbolData() for result in apiResult: db_cursor.execute( "INSERT INTO symbols (" "symbol, " "exchange, " "name, " "date, " "type, " "region, " "currency) " "VALUES (%s, %s, %s, %s, %s, %s, %s)", (result["symbol"], result["exchange"], result["name"], result["date"], result["type"], result["region"], result["currency"])) db_connection.commit() print(result)
# "close) " # "VALUES (%s,%s,%s,%s,%s,%s,%s)", # (symbol, # data["date"], # data["high"], # data["low"], # data["volume"], # data["open"], # data["close"])) if __name__ == "__main__": production = True buildTimeSeriesTable() apiConnector = APIConnector(production) db_connection = connect_database() db_cursor = db_connection.cursor() symbolList = getSymbolList(db_cursor) workers = [] symbolList.put(None) for i in range(4): p = multiprocessing.Process(target=getSymbolData, args=(apiConnector, )) workers.append(p) p.start() for p in workers: p.join()