Commit 75230ea3 authored by 赵杰's avatar 赵杰

修改数据库为with形式调用

parent 00eac2b5
...@@ -57,9 +57,9 @@ tamp_user_engine = create_engine( ...@@ -57,9 +57,9 @@ tamp_user_engine = create_engine(
), ),
echo=True echo=True
) )
tamp_product_session = scoped_session(sessionmaker(bind=tamp_product_engine))() # tamp_product_session = scoped_session(sessionmaker(bind=tamp_product_engine))()
tamp_order_session = scoped_session(sessionmaker(bind=tamp_order_engine))() # tamp_order_session = scoped_session(sessionmaker(bind=tamp_order_engine))()
tamp_user_session = scoped_session(sessionmaker(bind=tamp_user_engine))() # tamp_user_session = scoped_session(sessionmaker(bind=tamp_user_engine))()
# redis = redis.StrictRedis( # redis = redis.StrictRedis(
# host=config[env]['redis']['host'], # host=config[env]['redis']['host'],
......
...@@ -12,7 +12,7 @@ from sqlalchemy import and_ ...@@ -12,7 +12,7 @@ from sqlalchemy import and_
import tushare as ts import tushare as ts
import datetime import datetime
from decimal import Decimal from decimal import Decimal
from app.api.engine import tamp_user_session, tamp_product_session from app.api.engine import tamp_user_engine, tamp_product_engine, TAMP_SQL
# from app.model.tamp_user_models import CustomerOrder, CustomerInfo # from app.model.tamp_user_models import CustomerOrder, CustomerInfo
# from app.model.tamp_product_models import FundInfo # from app.model.tamp_product_models import FundInfo
...@@ -64,76 +64,82 @@ class UserCustomerDataAdaptor: ...@@ -64,76 +64,82 @@ class UserCustomerDataAdaptor:
# # .filter(user_id = self.user_id).all() # # .filter(user_id = self.user_id).all()
# data2 = tamp_user_session.query(t_customer_info).all() # data2 = tamp_user_session.query(t_customer_info).all()
# data3 = tamp_product_session.query(t_fund_info).all() # data3 = tamp_product_session.query(t_fund_info).all()
with TAMP_SQL(tamp_user_engine) as tamp_user, TAMP_SQL(tamp_product_engine) as tamp_product:
tamp_user_session = tamp_user.session
tamp_product_session = tamp_product.session
sql_user = """select f2.realname,f3.customer_name,fund_id,f1.order_type,f1.pay_date,f1.subscription_fee,f1.confirm_share_date,f1.confirm_share,f1.confirm_amount,f1.nav,f1.folio_name from customer_order f1, user_info f2,customer_info f3 where f2.id=f1.user_id and f3.id=f1.customer_id and f1.user_id='{}' and f1.customer_id='{}'""".format(self.user_id, self.customer_id)
cur = tamp_user_session.execute(sql_user)
data = cur.fetchall()
order_df = pd.DataFrame(list(data), columns=['username', 'customer_name', 'fund_id', 'order_type', 'pay_date',
'subscription_fee', 'confirm_share_date', 'confirm_share',
'confirm_amount', 'nav', 'folio_name'])
sql_user = """select f2.realname,f3.customer_name,fund_id,f1.order_type,f1.pay_date,f1.subscription_fee,f1.confirm_share_date,f1.confirm_share,f1.confirm_amount,f1.nav,f1.folio_name from customer_order f1, user_info f2,customer_info f3 where f2.id=f1.user_id and f3.id=f1.customer_id and f1.user_id='{}' and f1.customer_id='{}'""".format(self.user_id, self.customer_id) sql_product = "select distinct `id`, `fund_short_name`, `nav_frequency`, `substrategy` from `fund_info`"
cur = tamp_user_session.execute(sql_user) cur = tamp_product_session.execute(sql_product)
data = cur.fetchall() data = cur.fetchall()
order_df = pd.DataFrame(list(data), columns=['username', 'customer_name', 'fund_id', 'order_type', 'pay_date', product_df = pd.DataFrame(list(data), columns=['fund_id', 'fund_name', 'freq', 'substrategy'])
'subscription_fee', 'confirm_share_date', 'confirm_share',
'confirm_amount', 'nav', 'folio_name'])
sql_product = "select distinct `id`, `fund_short_name`, `nav_frequency`, `substrategy` from `fund_info`"
cur = tamp_product_session.execute(sql_product)
data = cur.fetchall()
product_df = pd.DataFrame(list(data), columns=['fund_id', 'fund_name', 'freq', 'substrategy'])
user_customer_order_df = order_df.set_index('fund_id').join(product_df.set_index('fund_id')).reset_index() user_customer_order_df = order_df.set_index('fund_id').join(product_df.set_index('fund_id')).reset_index()
self.start_date = user_customer_order_df["confirm_share_date"].min() self.start_date = user_customer_order_df["confirm_share_date"].min()
return user_customer_order_df return user_customer_order_df
# 获取客户持有的基金净值数据 # 获取客户持有的基金净值数据
def get_customer_fund_nav_data(self): def get_customer_fund_nav_data(self):
now_date = datetime.datetime.now().strftime("%Y%m%d") with TAMP_SQL(tamp_product_engine) as tamp_product:
trade_date_df = self.get_trade_cal("20000101", now_date) tamp_product_session = tamp_product.session
self.trade_cal_date = trade_date_df now_date = datetime.datetime.now().strftime("%Y%m%d")
all_fund_nav = pd.DataFrame(index=trade_date_df["datetime"]) trade_date_df = self.get_trade_cal("20000101", now_date)
all_fund_cnav = pd.DataFrame(index=trade_date_df["datetime"]) self.trade_cal_date = trade_date_df
all_fund_nav = pd.DataFrame(index=trade_date_df["datetime"])
for cur_fund_id in self.user_customer_order_df["fund_id"].unique(): all_fund_cnav = pd.DataFrame(index=trade_date_df["datetime"])
# 对应基金净值
sql = """select distinct `price_date`, `nav`,`cumulative_nav` from `fund_nav` where `fund_id`='{}' order by `price_date` ASC""".format(cur_fund_id) for cur_fund_id in self.user_customer_order_df["fund_id"].unique():
cur = tamp_product_session.execute(sql) # 对应基金净值
data = cur.fetchall() sql = """select distinct `price_date`, `nav`,`cumulative_nav` from `fund_nav` where `fund_id`='{}' order by `price_date` ASC""".format(cur_fund_id)
cur_fund_nav_df = pd.DataFrame(list(data), columns=['price_date', 'nav', 'cnav']) cur = tamp_product_session.execute(sql)
data = cur.fetchall()
# # 对应基金分红 cur_fund_nav_df = pd.DataFrame(list(data), columns=['price_date', 'nav', 'cnav'])
sql = """select distinct `distribute_date`, `distribution` from `fund_distribution` where `fund_id`='{}' and `distribute_type`='1' order by `distribute_date` ASC""".format(
cur_fund_id) # # 对应基金分红
cur = tamp_product_session.execute(sql) sql = """select distinct `distribute_date`, `distribution` from `fund_distribution` where `fund_id`='{}' and `distribute_type`='1' order by `distribute_date` ASC""".format(
data = cur.fetchall() cur_fund_id)
cur_fund_distribution_df = pd.DataFrame(list(data), columns=['price_date', 'distribution']) cur = tamp_product_session.execute(sql)
self.all_fund_distribution[cur_fund_id] = cur_fund_distribution_df data = cur.fetchall()
cur_fund_distribution_df = pd.DataFrame(list(data), columns=['price_date', 'distribution'])
self.all_fund_distribution[cur_fund_id] = cur_fund_distribution_df
# 对应基金performance数据
sql = """select distinct `price_date`, `ret_1w`, `ret_cum_1m`, `ret_cum_6m`, `ret_cum_1y`, `ret_cum_ytd`, `ret_cum_incep` from `fund_performance` where `fund_id`='{}' order by `price_date` ASC""".format(
cur_fund_id)
cur = tamp_product_session.execute(sql)
data = cur.fetchall()
cur_fund_performance_df = pd.DataFrame(list(data),
columns=['price_date', 'ret_1w', 'ret_cum_1m', 'ret_cum_6m', 'ret_cum_1y', 'ret_cum_ytd', 'ret_cum_incep'])
self.all_fund_performance[cur_fund_id] = cur_fund_performance_df
cur_fund_nav_df["price_date"] = pd.to_datetime(cur_fund_nav_df["price_date"])
cur_fund_nav_df.set_index("price_date", inplace=True)
all_fund_nav[cur_fund_id] = cur_fund_nav_df["nav"]
all_fund_cnav[cur_fund_id] = cur_fund_nav_df["cnav"]
all_fund_nav = all_fund_nav[all_fund_nav.index <= self.end_date]
all_fund_cnav = all_fund_cnav[all_fund_cnav.index <= self.end_date]
return all_fund_nav, all_fund_cnav
# 对应基金performance数据 # 获取客户对比指数净值数据
sql = """select distinct `price_date`, `ret_1w`, `ret_cum_1m`, `ret_cum_6m`, `ret_cum_1y`, `ret_cum_ytd`, `ret_cum_incep` from `fund_performance` where `fund_id`='{}' order by `price_date` ASC""".format( def get_customer_index_nav_data(self, index_id="IN0000007M"):
cur_fund_id) with TAMP_SQL(tamp_product_engine) as tamp_product:
tamp_product_session = tamp_product.session
sql = "select distinct price_date,close from fund_market_indexes where index_id='{}' order by price_date ASC".format(index_id)
cur = tamp_product_session.execute(sql) cur = tamp_product_session.execute(sql)
data = cur.fetchall() data = cur.fetchall()
cur_fund_performance_df = pd.DataFrame(list(data), index_df = pd.DataFrame(list(data), columns=['price_date', 'index'])
columns=['price_date', 'ret_1w', 'ret_cum_1m', 'ret_cum_6m', 'ret_cum_1y', 'ret_cum_ytd', 'ret_cum_incep']) index_df["price_date"] = pd.to_datetime(index_df["price_date"])
self.all_fund_performance[cur_fund_id] = cur_fund_performance_df index_df.set_index("price_date", inplace=True)
self.fund_cnav_total["index"] = index_df["index"]
cur_fund_nav_df["price_date"] = pd.to_datetime(cur_fund_nav_df["price_date"]) self.index_df = index_df
cur_fund_nav_df.set_index("price_date", inplace=True)
all_fund_nav[cur_fund_id] = cur_fund_nav_df["nav"]
all_fund_cnav[cur_fund_id] = cur_fund_nav_df["cnav"]
all_fund_nav = all_fund_nav[all_fund_nav.index <= self.end_date] return index_df
all_fund_cnav = all_fund_cnav[all_fund_cnav.index <= self.end_date]
return all_fund_nav, all_fund_cnav
# 获取客户对比指数净值数据
def get_customer_index_nav_data(self, index_id="IN0000007M"):
sql = "select distinct price_date,close from fund_market_indexes where index_id='{}' order by price_date ASC".format(index_id)
cur = tamp_product_session.execute(sql)
data = cur.fetchall()
index_df = pd.DataFrame(list(data), columns=['price_date', 'index'])
index_df["price_date"] = pd.to_datetime(index_df["price_date"])
index_df.set_index("price_date", inplace=True)
self.fund_cnav_total["index"] = index_df["index"]
self.index_df = index_df
return index_df
# 分组合计算 # 分组合计算
def group_operate(self): def group_operate(self):
......
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