def create_security(payload): body = request.get_json() security_name = body.get('security_name', None) region_id = body.get('region_id', None) asset_class_id = body.get('asset_class_id', None) if Region.query.get(region_id) is None or AssetClass.query.get( asset_class_id) is None: abort(422) security = Security(name=security_name, region_id=region_id, asset_class_id=asset_class_id) security.insert() db.session.add(security) db.session.commit() return jsonify({ 'success': True, 'security_id': security.id, 'security_name': security.name, 'region': security.region.name, 'asset_class': security.asset_class.name, })
def save_measure_in_db(session, data, point): objects = [] value = data.pop(0) my_ssid = Ssid(value[0]) my_bssid = Bssid(value[1]) my_measure = Measure(value[2]) my_channel = Channel(value[3]) my_security = Security(value[4]) my_point = Point(point) entry = session.query(Ssid).filter(Ssid.ssid_value.like(value[0])).first() if entry is None: my_ssid.measure.append(my_measure) objects.append(my_ssid) else: entry.measure.append(my_measure) entry = session.query(Bssid).filter(Bssid.bssid_value.like( value[1])).first() if entry is None: my_bssid.measure.append(my_measure) objects.append(my_bssid) else: entry.measure.append(my_measure) entry = session.query(Channel).filter(Channel.channel_number.like( value[3])).first() if entry is None: my_channel.measure.append(my_measure) objects.append(my_channel) else: entry.measure.append(my_measure) entry = session.query(Security).filter( Security.security_type.like(value[4])).first() if entry is None: my_security.measure.append(my_measure) objects.append(my_security) else: entry.measure.append(my_measure) entry = session.query(Point).filter(Point.x_location == point.x).filter( Point.y_location == point.y).first() if entry is None: my_point.measure.append(my_measure) objects.append(my_point) else: entry.measure.append(my_measure) objects.append(my_measure) session.add_all(objects) session.commit() if len(data) != 0: save_measure_in_db(session, data, point) else: return
continue if api_response: match_found = False for security in api_response.securities: if security.ticker and\ security.code == 'EQS' and\ security.ticker.upper() == ticker.upper(): match_found = True api_response = get_security(security.id) if api_response: stock = Security( id_intrinio=api_response.id, code=api_response.code, currency=api_response.currency, ticker=api_response.ticker, name=api_response.name, figi=api_response.figi, composite_figi=api_response.composite_figi, share_class_figi=api_response.share_class_figi ) print("Adding security {name} with ticker: {ticker}".format(name=stock.name, ticker=stock.ticker)) session.add(stock) session.commit() break if not match_found: print("\nNo match found for query: {query}\n".format(query=query)) missing_securities.append(query) else: print("No API response for: ", query) missing_securities.append(query) print("There were {length} missing securities. Trying search with larger page size...".format(length=len(missing_securities)))
def insert_data(session, data, metadata): """ Insert data into db :param data: df with columns date high low open close volume ajd_close :param metadata: df with single row name ticker security exchange """ if not metadata: # updating print('No metadata') else: # new data exchange = Exchange(name=metadata['exchange']) security = Security(type=metadata['security']) mapped_ticker = Ticker( ticker=metadata['ticker'], name=metadata['name'], exchange=exchange, security=security) # TODO create a mapping object data = data.to_dict(orient='records') # list of dicts # print('Debugging - mapped_ticker') # debugging # print(mapped_ticker) # debugging # print('Debugging - Data length') # debugging # print(len(data)) # debugging # print('Debugging - Data') # debugging # print(data) price_list = list() for item in data: # merge metadata to data date = item['date'] high = item['high'] low = item['low'] open = item['open'] close = item['close'] volume = item['volume'] adj_close = item['adj_close'] # data_point = Price(date=date, # open=open, # high=high, # low=low, # close=close, # adj_close=adj_close, # ticker=mapped_ticker) data_point = { 'date': date, 'open': open, 'high': high, 'low': low, 'close': close, 'adj_close': adj_close, 'ticker': mapped_ticker } price_list.append(data_point) # print('Debugging - printing data_point') # debugging # print(data_point) # debugging # print('Debugging - price_list') # debugging # print(price_list) # debugging # print(f'Inserting data into DB') # debugging session.bulk_insert_mappings(Price, price_list)