def init_securities(df, security_type='stock', provider=Provider.EASTMONEY): df = df.drop_duplicates(subset=['id']) data_schema = get_security_schema(security_type) store_category = get_store_category(data_schema=data_schema) db_engine = get_db_engine(provider, store_category=store_category) security_schema = get_security_schema(security_type) current = get_securities(security_type=security_type, columns=[security_schema.id], provider=provider) df = df[~df['id'].isin(current['id'])] df.to_sql(security_schema.__tablename__, db_engine, index=False, if_exists='append')
def get_securities(security_type='stock', exchanges=None, codes=None, columns=None, return_type='df', session=None, start_timestamp=None, end_timestamp=None, filters=None, order=None, limit=None, provider='eastmoney'): local_session = False data_schema = get_security_schema(security_type) store_category = get_store_category(data_schema=data_schema) if not session: session = get_db_session(provider=provider, store_category=store_category) local_session = True if not order: order = data_schema.code.asc() try: if columns: query = session.query(*columns) else: query = session.query(data_schema) # filters if exchanges: query = query.filter(data_schema.exchange.in_(exchanges)) if codes: query = query.filter(data_schema.code.in_(codes)) query = common_filter(query, data_schema=data_schema, start_timestamp=start_timestamp, end_timestamp=end_timestamp, filters=filters, order=order, limit=limit) if return_type == 'df': # TODO:add indices info return pd.read_sql(query.statement, query.session.bind) elif return_type == 'domain': return query.all() elif return_type == 'dict': return [item.to_json() for item in query.all()] except Exception as e: raise finally: if local_session: session.close()
def init_securities(df, security_type='stock', provider=Provider.EASTMONEY): db_engine = get_db_engine(store_category=StoreCategory.meta) security_schema = get_security_schema(security_type) current = get_securities(columns=[security_schema.id], provider=provider) df = df[~df['id'].isin(current['id'])] df.to_sql(security_schema.__tablename__, db_engine, index=False, if_exists='append')
def get_securities(security_list: List[str] = None, security_type: Union[SecurityType, str] = 'stock', exchanges: List[str] = None, codes: List[str] = None, columns: List = None, return_type: str = 'df', session: Session = None, start_timestamp: Union[str, pd.Timestamp] = None, end_timestamp: Union[str, pd.Timestamp] = None, filters: List = None, order: object = None, limit: int = None, provider: Union[str, Provider] = 'eastmoney', index: str = 'code', index_is_time: bool = False) -> object: data_schema = get_security_schema(security_type) if not order: order = data_schema.code.asc() if exchanges: if filters: filters.append(data_schema.exchange.in_(exchanges)) else: filters = [data_schema.exchange.in_(exchanges)] return get_data(data_schema=data_schema, security_list=security_list, security_id=None, codes=codes, level=None, provider=provider, columns=columns, return_type=return_type, start_timestamp=start_timestamp, end_timestamp=end_timestamp, filters=filters, session=session, order=order, limit=limit, index=index, index_is_time=index_is_time)