Beispiel #1
0
    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,
        })
Beispiel #2
0
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
Beispiel #3
0
            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)))
Beispiel #4
0
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)