Commit f2aadaad authored by Dr.李's avatar Dr.李

enable filter manager by name

parent 94e941a0
import datetime as dt import datetime as dt
import calendar import calendar
import pymssql
import sqlalchemy as sa import sqlalchemy as sa
import pandas as pd import pandas as pd
...@@ -52,7 +54,7 @@ INDUSTRY_STYLES = [ ...@@ -52,7 +54,7 @@ INDUSTRY_STYLES = [
def read_sql(query, source="mssql"): def read_sql(query, source="mssql"):
if source == "mssql": if source == "mssql":
engine = sa.create_engine(MSSQL_CONN, connect_args={"charset": "GBK"}) engine = sa.create_engine(MSSQL_CONN, encoding="utf8", connect_args={"charset": "GBK"})
elif source == "mysql": elif source == "mysql":
engine = sa.create_engine(MYSQL_CONN) engine = sa.create_engine(MYSQL_CONN)
return pd.read_sql(query, con=engine) return pd.read_sql(query, con=engine)
...@@ -83,7 +85,6 @@ def fd_alive_funds(trade_dt, class_code=None): ...@@ -83,7 +85,6 @@ def fd_alive_funds(trade_dt, class_code=None):
condition.append(f" CLASSCODE like '{c}%' ") condition.append(f" CLASSCODE like '{c}%' ")
condition = "OR".join(condition) condition = "OR".join(condition)
condition = "(" + condition + ") AND" condition = "(" + condition + ") AND"
query = f""" query = f"""
select SECODE as SECURITYID, BEGINDATE, ENDDATE, CLASSCODE FROM TQ_FD_TYPE select SECODE as SECURITYID, BEGINDATE, ENDDATE, CLASSCODE FROM TQ_FD_TYPE
...@@ -432,15 +433,32 @@ def stk_return(start_date, end_date, security_ids=None): ...@@ -432,15 +433,32 @@ def stk_return(start_date, end_date, security_ids=None):
return read_sql(query, source="mysql").sort_values("security_code").reset_index(drop=True) return read_sql(query, source="mysql").sort_values("security_code").reset_index(drop=True)
def fd_manager(manager_ids, start_date, end_date): def fd_manager(manager_ids, manager_names=None, start_date=None, end_date=None):
manager_ids = _join_ids(manager_ids) if manager_ids:
query = f""" manager_ids = _join_ids(manager_ids)
SELECT MANAGERCODE, MANAGERNAME, COMPCODE, COMPNAME, SECODE as SECURITYID, BEGINDATE, ENDDATE FROM TQ_FD_MGPERFORMANCE elif manager_names:
WHERE manager_names = _join_ids(manager_names)
else:
BEGINDATE <= '{_to_yyyymmdd(end_date)}' AND raise ValueError("manager_ids and manager_names can't be set empty both")
ENDDATE >= '{_to_yyyymmdd(start_date)}' AND if manager_ids:
MANAGERCODE in ({manager_ids}) AND query = f"""
ISVALID = 1 SELECT MANAGERCODE, MANAGERNAME, COMPCODE, COMPNAME, SECODE as SECURITYID, BEGINDATE, ENDDATE FROM TQ_FD_MGPERFORMANCE
""" WHERE
BEGINDATE <= '{_to_yyyymmdd(end_date)}' AND
ENDDATE >= '{_to_yyyymmdd(start_date)}' AND
MANAGERCODE in ({manager_ids}) AND
ISVALID = 1
"""
elif manager_names:
query = f"""
SELECT MANAGERCODE, MANAGERNAME, COMPCODE, COMPNAME, SECODE as SECURITYID, BEGINDATE, ENDDATE FROM TQ_FD_MGPERFORMANCE
WHERE
BEGINDATE <= '{_to_yyyymmdd(end_date)}' AND
ENDDATE >= '{_to_yyyymmdd(start_date)}' AND
MANAGERNAME in ({manager_names}) AND
ISVALID = 1
"""
print(query)
return read_sql(query).sort_values("MANAGERCODE").reset_index(drop=True) return read_sql(query).sort_values("MANAGERCODE").reset_index(drop=True)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment