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

enable filter manager by name

parent 94e941a0
import datetime as dt
import calendar
import pymssql
import sqlalchemy as sa
import pandas as pd
......@@ -52,7 +54,7 @@ INDUSTRY_STYLES = [
def read_sql(query, 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":
engine = sa.create_engine(MYSQL_CONN)
return pd.read_sql(query, con=engine)
......@@ -83,7 +85,6 @@ def fd_alive_funds(trade_dt, class_code=None):
condition.append(f" CLASSCODE like '{c}%' ")
condition = "OR".join(condition)
condition = "(" + condition + ") AND"
query = f"""
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):
return read_sql(query, source="mysql").sort_values("security_code").reset_index(drop=True)
def fd_manager(manager_ids, start_date, end_date):
manager_ids = _join_ids(manager_ids)
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
MANAGERCODE in ({manager_ids}) AND
ISVALID = 1
"""
def fd_manager(manager_ids, manager_names=None, start_date=None, end_date=None):
if manager_ids:
manager_ids = _join_ids(manager_ids)
elif manager_names:
manager_names = _join_ids(manager_names)
else:
raise ValueError("manager_ids and manager_names can't be set empty both")
if manager_ids:
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
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)
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