|
|
#导入或计算东财二级的成交额及排序等数据
|
|
|
|
|
|
###当前交易日的计算方法
|
|
|
###1、获取当日的成交信息,并计算排序
|
|
|
###2、获取当日所有指数汇总信息,计算当日的占比、占比排名
|
|
|
###3、获取前一日(多日)的成交信息
|
|
|
###4、获取前一日(多日)的汇总信息等
|
|
|
###5、计算对比
|
|
|
###
|
|
|
###
|
|
|
###
|
|
|
###
|
|
|
###
|
|
|
###批量时计算方法
|
|
|
###1、获取区间第一日的数据
|
|
|
###2、获取前一日数据并计算(如无前一日,则默认一日)
|
|
|
###
|
|
|
###
|
|
|
###
|
|
|
###
|
|
|
from decimal import Decimal
|
|
|
import pymysql
|
|
|
|
|
|
def getTradingDates(dbconfig,dbcursor,state,date):
|
|
|
# 1日 5日 10日 20日 30日周期日期
|
|
|
period_trading_dateMap = {} # 用于计算成交额
|
|
|
period_trading_dateMap2 = {} # 用于计算区间涨跌数量等,区间涨跌等需要查询个股
|
|
|
# 获取周期
|
|
|
sql_trade_period_qurey = 'select date,week,trade from trade_dates where trade = %s and date < %s order by date desc limit 30'
|
|
|
sql_trade_period = state
|
|
|
dbcursor.execute(sql_trade_period_qurey,(sql_trade_period,date))
|
|
|
trading_period_dates = dbcursor.fetchall()
|
|
|
#前一个交易日
|
|
|
prevTradeDate = ''
|
|
|
periodIndex = 0
|
|
|
period_trading_dateMap
|
|
|
for ttrading_date in trading_period_dates:
|
|
|
if periodIndex == 0:
|
|
|
period_trading_dateMap['1']=ttrading_date[0]
|
|
|
elif periodIndex == 1:
|
|
|
prevTradeDate = ttrading_date[0]
|
|
|
elif periodIndex == 4:
|
|
|
period_trading_dateMap['5']=ttrading_date[0]
|
|
|
elif periodIndex == 5:
|
|
|
period_trading_dateMap2['5'] = ttrading_date[0]
|
|
|
elif periodIndex == 9:
|
|
|
period_trading_dateMap['10'] = ttrading_date[0]
|
|
|
elif periodIndex == 10:
|
|
|
period_trading_dateMap2['10'] = ttrading_date[0]
|
|
|
elif periodIndex == 19:
|
|
|
period_trading_dateMap['20'] = ttrading_date[0]
|
|
|
elif periodIndex == 20:
|
|
|
period_trading_dateMap2['20'] = ttrading_date[0]
|
|
|
elif periodIndex == 29:
|
|
|
period_trading_dateMap['30'] =ttrading_date[0]
|
|
|
elif periodIndex == 30:
|
|
|
period_trading_dateMap2['30'] = ttrading_date[0]
|
|
|
elif periodIndex > 30:
|
|
|
break
|
|
|
periodIndex += 1
|
|
|
return period_trading_dateMap
|
|
|
|
|
|
def getPeriodTurnOver(dbconfig,dbcursor,startDate,endDate):
|
|
|
periodTurnOverMap = {}
|
|
|
total = Decimal('0.00')
|
|
|
sql_trade_period_qurey = 'select code ,sum(amount) as turnover from stock_index where trade_day >= %s and trade_day < %s'
|
|
|
dbcursor.execute(sql_trade_period_qurey,(startDate,endDate))
|
|
|
totalTurnOvers = dbcursor.fetchall()
|
|
|
for row in totalTurnOvers:
|
|
|
code,turnover = row
|
|
|
total = turnover
|
|
|
|
|
|
sql_trade_period_qurey = 'select code,sum(amount) as turnover from stock_index where trade_day >= %s and trade_day < %s group by code'
|
|
|
dbcursor.execute(sql_trade_period_qurey,(startDate,endDate))
|
|
|
totalTurnOvers = dbcursor.fetchall()
|
|
|
for row in totalTurnOvers:
|
|
|
code,turnover = row
|
|
|
periodTurnOverMap[code] = {'code':code,'turnover':turnover,'total':total}
|
|
|
return periodTurnOverMap
|
|
|
|
|
|
def getPeriodDiff(dbconfig,dbcursor,startDate,endDate):
|
|
|
periodStartDataMap = {}
|
|
|
periodEndDataMap = {}
|
|
|
periodDiffMap = {}
|
|
|
industryMap = {}
|
|
|
sql_trade_period_qurey = 'select code,name from stock_index where trade_day = %s'
|
|
|
dbcursor.execute(sql_trade_period_qurey,'2023-05-05')
|
|
|
datas = dbcursor.fetchall()
|
|
|
for row in datas:
|
|
|
code,name = row
|
|
|
industryMap[name] = code
|
|
|
|
|
|
sql_trade_period_qurey = 'select s.code as code,s.close as close,s.open as open,sb.blemind2 as blemind2 from stocks s left join stock_basis sb on s.code = sb.code where s.trade_day = %s'
|
|
|
dbcursor.execute(sql_trade_period_qurey,startDate)
|
|
|
datas = dbcursor.fetchall()
|
|
|
for row in datas:
|
|
|
code,close,open,blemind2 = row
|
|
|
periodStartDataMap[code] = {'code':code,'close':close,'open':open,'blemind2':blemind2}
|
|
|
|
|
|
sql_trade_period_qurey = 'select s.code as code,s.close as close,s.open as open,sb.blemind2 as blemind2 from stocks s left join stock_basis sb on s.code = sb.code where s.trade_day = %s'
|
|
|
dbcursor.execute(sql_trade_period_qurey,endDate)
|
|
|
datas = dbcursor.fetchall()
|
|
|
for row in datas:
|
|
|
code,close,open,blemind2 = row
|
|
|
periodEndDataMap[code] = {'code':code,'close':close,'open':open,'blemind2':blemind2}
|
|
|
if code in periodStartDataMap:
|
|
|
if industryMap[blemind2] in periodDiffMap:
|
|
|
print('close: ',close, ' bclose: ',periodStartDataMap[code]['close'] )
|
|
|
if close - periodStartDataMap[code]['close'] > 0 :
|
|
|
periodDiffMap[industryMap[blemind2]]['rise'] += 1
|
|
|
elif close - periodStartDataMap[code]['close'] == 0 :
|
|
|
periodDiffMap[industryMap[blemind2]]['flat'] += 1
|
|
|
else:
|
|
|
periodDiffMap[industryMap[blemind2]]['fall'] += 1
|
|
|
else:
|
|
|
if close - periodStartDataMap[code]['close'] > 0 :
|
|
|
periodDiffMap[industryMap[blemind2]] = {'rise':1,'flat':0,'fall':0}
|
|
|
elif close - periodStartDataMap[code]['close'] == 0 :
|
|
|
periodDiffMap[industryMap[blemind2]] = {'rise':0,'flat':1,'fall':0}
|
|
|
else:
|
|
|
periodDiffMap[industryMap[blemind2]] = {'rise':0,'flat':0,'fall':1}
|
|
|
else:
|
|
|
print('close: ',close)
|
|
|
if close > 0 :
|
|
|
periodDiffMap[industryMap[blemind2]] = {'rise':1,'flat':0,'fall':0}
|
|
|
elif close == 0 :
|
|
|
periodDiffMap[industryMap[blemind2]] = {'rise':0,'flat':1,'fall':0}
|
|
|
else:
|
|
|
periodDiffMap[industryMap[blemind2]] = {'rise':0,'flat':0,'fall':1}
|
|
|
return periodDiffMap
|
|
|
|
|
|
def main():
|
|
|
# #数据库A的连接信息;NAS数据库
|
|
|
# db_a_config = {
|
|
|
# 'host': '192.168.0.222',
|
|
|
# 'user': 'root',
|
|
|
# 'password': '1qazse42W3',
|
|
|
# 'db': 'ry',
|
|
|
# 'charset': 'utf8mb4',
|
|
|
# }
|
|
|
|
|
|
# # 数据库B的连接信息;NAS数据库
|
|
|
# db_b_config = {
|
|
|
# 'host': '192.168.0.222',
|
|
|
# 'user': 'root',
|
|
|
# 'password': '1qazse42W3',
|
|
|
# 'db': 'mojin',
|
|
|
# 'charset': 'utf8mb4',
|
|
|
# }
|
|
|
|
|
|
# 数据库A的连接信息;腾讯云数据库
|
|
|
db_a_config = {
|
|
|
'host': '124.223.98.178',
|
|
|
'user': 'root',
|
|
|
'password': '1qazse42W3',
|
|
|
'db': 'ry',
|
|
|
'charset': 'utf8mb4',
|
|
|
}
|
|
|
|
|
|
# 数据库B的连接信息;腾讯云数据库
|
|
|
db_b_config = {
|
|
|
'host': '124.223.98.178',
|
|
|
'user': 'root',
|
|
|
'password': '1qazse42W3',
|
|
|
'db': 'mojin',
|
|
|
'charset': 'utf8mb4',
|
|
|
}
|
|
|
try:
|
|
|
# 连接数据库A
|
|
|
db_a_conn = pymysql.connect(**db_a_config)
|
|
|
db_a_cursor = db_a_conn.cursor()
|
|
|
|
|
|
# 连接数据库B
|
|
|
db_b_conn = pymysql.connect(**db_b_config)
|
|
|
db_b_cursor = db_b_conn.cursor()
|
|
|
|
|
|
stock_basic_map = {}
|
|
|
|
|
|
#转换数据的日期(单日)
|
|
|
trans_date = '2023-07-20'
|
|
|
|
|
|
#查询交易日数据
|
|
|
sql_trade_qurey = 'select date,week,trade from trade_dates where trade = %s and date = %s'
|
|
|
sql_trade = "trading"
|
|
|
db_a_cursor.execute(sql_trade_qurey,(sql_trade,trans_date))
|
|
|
trading_dates = db_a_cursor.fetchall()
|
|
|
|
|
|
# 查询交易日期 - 交易日的指数数据 - 计算周期数据 - 转存
|
|
|
queryType = ['1','5','10','20','30'] #查询类型
|
|
|
testRet = 0
|
|
|
for row in trading_dates:
|
|
|
# 1日 5日 10日 20日 30日周期日期
|
|
|
period_trading_dateMap = {} # 用于计算成交额
|
|
|
# period_trading_dateMap = getTradingDates(db_a_conn,db_a_cursor,sql_trade,trans_date)
|
|
|
period_trading_dateMap2 = {} # 用于计算区间涨跌数量等,区间涨跌等需要查询个股;区间涨跌是以前一日的收盘价与当前收盘价计算的
|
|
|
trading_date,week,trade = row
|
|
|
# 获取周期,不包含当前交易日
|
|
|
sql_trade_period_qurey = 'select date,week,trade from trade_dates where trade = %s and date < %s order by date desc limit 30'
|
|
|
sql_trade_period = "trading"
|
|
|
db_a_cursor.execute(sql_trade_period_qurey,(sql_trade_period,trading_date))
|
|
|
trading_period_dates = db_a_cursor.fetchall()
|
|
|
#前一个交易日
|
|
|
prevTradeDate = ''
|
|
|
periodIndex = 0
|
|
|
for ttrading_date in trading_period_dates:
|
|
|
if periodIndex == 0:
|
|
|
period_trading_dateMap['1']=ttrading_date[0]
|
|
|
elif periodIndex == 1:
|
|
|
prevTradeDate = ttrading_date[0]
|
|
|
elif periodIndex == 4:
|
|
|
period_trading_dateMap['5']=ttrading_date[0]
|
|
|
elif periodIndex == 5:
|
|
|
period_trading_dateMap2['5'] = ttrading_date[0]
|
|
|
elif periodIndex == 9:
|
|
|
period_trading_dateMap['10'] = ttrading_date[0]
|
|
|
elif periodIndex == 10:
|
|
|
period_trading_dateMap2['10'] = ttrading_date[0]
|
|
|
elif periodIndex == 19:
|
|
|
period_trading_dateMap['20'] = ttrading_date[0]
|
|
|
elif periodIndex == 20:
|
|
|
period_trading_dateMap2['20'] = ttrading_date[0]
|
|
|
elif periodIndex == 29:
|
|
|
period_trading_dateMap['30'] =ttrading_date[0]
|
|
|
elif periodIndex == 30:
|
|
|
period_trading_dateMap2['30'] = ttrading_date[0]
|
|
|
elif periodIndex > 30:
|
|
|
break
|
|
|
periodIndex += 1
|
|
|
|
|
|
print('start transfer statistics ',trading_date , ' data.')
|
|
|
# 获取多日成交额汇总数据
|
|
|
turnOver5 = getPeriodTurnOver(db_a_conn,db_a_cursor,period_trading_dateMap['5'],trading_date)
|
|
|
for data in turnOver5:
|
|
|
industries_tradeDaymap[data]['turnover5'] = turnOver5[data]['turnover']
|
|
|
turnOver10 = getPeriodTurnOver(db_a_conn,db_a_cursor,period_trading_dateMap['10'],trading_date)
|
|
|
for data in turnOver10:
|
|
|
industries_tradeDaymap[data]['turnover10'] = turnOver5[data]['turnover']
|
|
|
turnOver20 = getPeriodTurnOver(db_a_conn,db_a_cursor,period_trading_dateMap['20'],trading_date)
|
|
|
for data in turnOver20:
|
|
|
industries_tradeDaymap[data]['turnover20'] = turnOver5[data]['turnover']
|
|
|
turnOver30 = getPeriodTurnOver(db_a_conn,db_a_cursor,period_trading_dateMap['30'],trading_date)
|
|
|
for data in turnOver30:
|
|
|
industries_tradeDaymap[data]['turnover30'] = turnOver5[data]['turnover']
|
|
|
|
|
|
# 获取涨跌幅数据并统计涨跌幅
|
|
|
periodUpDownMap5 = getPeriodDiff(db_a_conn,db_a_cursor,period_trading_dateMap['5'],trading_date)
|
|
|
periodUpDownMap10 = getPeriodDiff(db_a_conn,db_a_cursor,period_trading_dateMap['10'],trading_date)
|
|
|
periodUpDownMap20 = getPeriodDiff(db_a_conn,db_a_cursor,period_trading_dateMap['20'],trading_date)
|
|
|
periodUpDownMap30 = getPeriodDiff(db_a_conn,db_a_cursor,period_trading_dateMap['30'],trading_date)
|
|
|
|
|
|
totalTunrover = Decimal('0.00')
|
|
|
#查询日交易的所有成交额,用于计算占比等
|
|
|
sql_stock_query = 'select code,sum(amount) as turnover from stock_index where trade_day = %s '
|
|
|
db_a_cursor.execute(sql_stock_query,trading_date)
|
|
|
datas = db_a_cursor.fetchall()
|
|
|
for total in datas:
|
|
|
code , totalTunrover = total
|
|
|
#查询日交易数据 以成交额进行排序
|
|
|
sql_stock_query = 'select code,name,trade_day, open,close,high,low,differrange,volume,amount,limitupnum,limitdownnum,suspendnum,risenum,fallnum,flatnum,componentnum,mv,pettm,pettm_mid,liqmv,rcnthigh,rcntlow from stock_index where trade_day = %s order by volume DESC'
|
|
|
db_a_cursor.execute(sql_stock_query,trading_date)
|
|
|
datas = db_a_cursor.fetchall()
|
|
|
sortIndex = 1
|
|
|
|
|
|
industries_tradeDaymap = {}
|
|
|
|
|
|
#遍历交易日数据,多日数据需要单独计算; 历史数据,全部从dong_cai_secondary_industry_statistics中获取,没有的则以当前的为准
|
|
|
for stock_index_data in datas:
|
|
|
code,name,trade_day, open,close,high,low,differrange,volumn,amount,limitupnum,limitdownnum,suspendnum,risenum,fallnum,flatnum,componentnum,mv,pettm,pettm_mid,liqmv,rcnthigh,rcntlow = stock_index_data
|
|
|
business_date = trade_day
|
|
|
security_code = code
|
|
|
security_name = name
|
|
|
turnover = amount
|
|
|
turnover_sort = sortIndex
|
|
|
turnover_change = '' #todo 从交易数据中获取然后计算 ,一日、多日
|
|
|
sortIndex +=1
|
|
|
rise_number = risenum
|
|
|
flat_number = flatnum
|
|
|
# print(type(turnover),type(totalTunrover),type(turnover*Decimal('100.00')))
|
|
|
ratio = (turnover*Decimal('100.00') )/ totalTunrover
|
|
|
turnover_ratio = ratio
|
|
|
turnover_ratio_change = '' #todo
|
|
|
turnover_sort_change = ''#todo
|
|
|
# industries_tradeDaymap[code] = {business_date,security_code,turnover_sort,rise_number,flat_number}
|
|
|
|
|
|
# 总成交额
|
|
|
# totalTunrover += turnover
|
|
|
|
|
|
# turnover_change = '' #todo
|
|
|
# turnover_ratio_change = '' #todo
|
|
|
# turnover_sort_change = ''#todo
|
|
|
turnover5 = turnOver5['code']['turnover'] #todo
|
|
|
turnover5_change = '' #todo
|
|
|
turnover5_ratio = '' #todo
|
|
|
turnover5_ratio_change = '' #todo
|
|
|
turnover5_sort = '' #todo
|
|
|
turnover5_sort_change = ''#todo
|
|
|
turnover10 = turnOver10['code']['turnover'] #todo
|
|
|
turnover10_change = '' #todo
|
|
|
turnover10_ratio = '' #todo
|
|
|
turnover10_ratio_change = '' #todo
|
|
|
turnover10_sort = '' #todo
|
|
|
turnover10_sort_change = ''#todo
|
|
|
turnover20 = turnOver20['code']['turnover'] #todo
|
|
|
turnover20_change = '' #todo
|
|
|
turnover20_ratio = '' #todo
|
|
|
turnover20_ratio_change = '' #todo
|
|
|
turnover20_sort = '' #todo
|
|
|
turnover20_sort_change = ''#todo
|
|
|
turnover30 = turnOver30['code']['turnover'] #todo
|
|
|
turnover30_change = '' #todo
|
|
|
turnover30_ratio = '' #todo
|
|
|
turnover30_ratio_change = '' #todo
|
|
|
turnover30_sort = '' #todo
|
|
|
turnover30_sort_change = ''#todo
|
|
|
rise_number_change = ''#todo
|
|
|
losses_number = fallnum
|
|
|
losses_number_change = '' #todo
|
|
|
flat_number_change = '' #todo
|
|
|
rise5_number = '' #todo
|
|
|
rise5_number_change = ''#todo
|
|
|
losses5_number = '' #todo
|
|
|
losses5_number_change = '' #todo
|
|
|
flat5_number = '' #todo
|
|
|
flat5_number_change = '' #todo
|
|
|
rise10_number = '' #todo
|
|
|
rise10_number_change = ''#todo
|
|
|
losses10_number = '' #todo
|
|
|
losses10_number_change = '' #todo
|
|
|
flat10_number = '' #todo
|
|
|
flat10_number_change = '' #todo
|
|
|
rise20_number = '' #todo
|
|
|
rise20_number_change = ''#todo
|
|
|
losses20_number = '' #todo
|
|
|
losses20_number_change = '' #todo
|
|
|
flat20_number = '' #todo
|
|
|
flat20_number_change = '' #todo
|
|
|
rise30_number = '' #todo
|
|
|
rise30_number_change = ''#todo
|
|
|
losses30_number = '' #todo
|
|
|
losses30_number_change = '' #todo
|
|
|
flat30_number = '' #todo
|
|
|
flat30_number_change = '' #todo
|
|
|
# create_time =
|
|
|
# sql_insert = f"INSERT INTO dong_cai_secondary_industry (business_date,sort,security_code,security_name,security_type,number_ingredients,opening_price,closing_price,volume,turnover,total_capitalization,free_capitalization,change_percentage,highest_price,lowest_price,rise_number,losses_number,flat_number,rise_stop_number,losses_stop_number,stop_number,recently_high,recently_low,pe_ttm,pe_center_ttm) VALUES ( %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s,%s, %s, %s, %s)"
|
|
|
# db_b_cursor.execute(sql_insert, (business_date,sort,security_code,security_name,security_type,number_ingredients,opening_price,closing_price,volume,turnover,total_capitalization,free_capitalization,change_percentage,highest_price,lowest_price,rise_number,losses_number,flat_number,rise_stop_number,losses_stop_number,stop_number,recently_high,recently_low,pe_ttm,pe_center_ttm))
|
|
|
industries_tradeDaymap[code] = {'business_date':business_date,'security_code':security_code,'security_name':security_name,
|
|
|
'turnover':turnover,'turnover_change':turnover_change,'turnover_sort':turnover_sort,'turnover_sort_change':turnover_sort_change,
|
|
|
'turnover_ratio':turnover_ratio,'turnover_ratio_change':turnover_ratio_change,
|
|
|
'turnover5' : turnover5,'turnover5_change':turnover5_change,'turnover5_ratio':turnover5_ratio,'turnover5_ratio_change':turnover5_ratio_change,'turnover5_sort':turnover5_sort,'turnover5_sort_change':turnover5_sort_change,
|
|
|
'turnover10' : turnover10,'turnover10_change':turnover10_change,'turnover10_ratio':turnover10_ratio,'turnover10_ratio_change':turnover10_ratio_change,'turnover10_sort':turnover10_sort,'turnover10_sort_change':turnover10_sort_change,
|
|
|
'turnover20' : turnover20,'turnover20_change':turnover20_change,'turnover20_ratio':turnover20_ratio,'turnover20_ratio_change':turnover20_ratio_change,'turnover20_sort':turnover20_sort,'turnover20_sort_change':turnover20_sort_change,
|
|
|
'turnover30' : turnover30,'turnover30_change':turnover30_change,'turnover30_ratio':turnover30_ratio,'turnover30_ratio_change':turnover30_ratio_change,'turnover30_sort':turnover30_sort,'turnover30_sort_change':turnover30_sort_change,
|
|
|
'rise_number':rise_number,'flat_number':flat_number,'losses_number':losses_number,'rise_number_change':rise_number_change,'flat_number_change':flat_number_change,'losses_number_change':losses_number_change,
|
|
|
'rise5_number':rise5_number,'flat5_number':flat5_number,'losses5_number':losses5_number,'rise5_number_change':rise5_number_change,'flat5_number_change':flat5_number_change,'losses5_number_change':losses5_number_change,
|
|
|
'rise10_number':rise10_number,'flat10_number':flat10_number,'losses10_number':losses10_number,'rise10_number_change':rise10_number_change,'flat10_number_change':flat10_number_change,'losses10_number_change':losses10_number_change,
|
|
|
'rise20_number':rise20_number,'flat20_number':flat20_number,'losses20_number':losses20_number,'rise20_number_change':rise20_number_change,'flat20_number_change':flat20_number_change,'losses20_number_change':losses20_number_change,
|
|
|
'rise30_number':rise30_number,'flat30_number':flat30_number,'losses30_number':losses30_number,'rise30_number_change':rise30_number_change,'flat30_number_change':flat30_number_change,'losses30_number_change':losses30_number_change}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
# 计算获取多日数据
|
|
|
prevTotalTunrover = Decimal('0.00')
|
|
|
sql_stock_query = 'select code,sum(amount) as turnover from stock_index where trade_day = %s '
|
|
|
db_a_cursor.execute(sql_stock_query,prevTradeDate)
|
|
|
datas = db_a_cursor.fetchall()
|
|
|
for total in datas:
|
|
|
code,prevTotalTunrover = total
|
|
|
|
|
|
#遍历前一日(或多日)交易数据,获取成交量,计算变化;再从(dong_cai_secondary_industry_statistics)获取,及排名数据,获取变化值; 如果没有,当前值就是最新的值
|
|
|
sql_stock_query = 'select code,name,trade_day, open,close,high,low,differrange,volume,amount,limitupnum,limitdownnum,suspendnum,risenum,fallnum,flatnum,componentnum,mv,pettm,pettm_mid,liqmv,rcnthigh,rcntlow from stock_index where trade_day = %s order by volume DESC'
|
|
|
db_a_cursor.execute(sql_stock_query,prevTradeDate)
|
|
|
datas = db_a_cursor.fetchall()
|
|
|
industries_prevTradeDaymap = {}
|
|
|
for stock_index_data in datas:
|
|
|
code,name,trade_day, open,close,high,low,differrange,volume,amount,limitupnum,limitdownnum,suspendnum,risenum,fallnum,flatnum,componentnum,mv,pettm,pettm_mid,liqmv,rcnthigh,rcntlow = stock_index_data
|
|
|
business_date = trading_date
|
|
|
security_code = code
|
|
|
security_name = name
|
|
|
turnover = amount
|
|
|
turnover_sort = sortIndex
|
|
|
sortIndex +=1
|
|
|
rise_number = risenum
|
|
|
flat_number = flatnum
|
|
|
|
|
|
ratio = (turnover*Decimal('100')) / prevTotalTunrover
|
|
|
turnover_ratio = ratio
|
|
|
# industries_tradeDaymap[code] = {business_date,security_code,turnover_sort,rise_number,flat_number}
|
|
|
industries_prevTradeDaymap[code] = {'business_date':business_date,'security_code':security_code,'turnover':turnover,'turnover_sort':turnover_sort,'rise_number':rise_number,
|
|
|
'turnover_ratio':turnover_ratio,'flat_number':flat_number}
|
|
|
industries_tradeDaymap[code]['turnover_change'] = industries_tradeDaymap[code]['turnover'] - turnover
|
|
|
# industries_tradeDaymap[code]['turnover_sort_change'] = industries_tradeDaymap[code]['turnover_sort'] - turnover_sort
|
|
|
|
|
|
print(industries_tradeDaymap)
|
|
|
|
|
|
#提交数据到数据库B中
|
|
|
db_b_conn.commit()
|
|
|
print('successed transfer ',trading_date , ' data.' )
|
|
|
print('\r\n')
|
|
|
####dong_cai_secondary_industry_statistics
|
|
|
# `id` bigint(0) NOT NULL AUTO_INCREMENT,
|
|
|
# `business_date` date NOT NULL COMMENT '业务日期',
|
|
|
# `security_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '证券代码',
|
|
|
# `security_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '证券名称',
|
|
|
# `turnover` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '成交额(百万元)',
|
|
|
# `turnover_change` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '成交额变化(百万元)',
|
|
|
# `turnover_ratio` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '成交额占比',
|
|
|
# `turnover_ratio_change` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '成交额占比变化',
|
|
|
# `turnover_sort` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '成交额排名',
|
|
|
# `turnover_sort_change` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '成交额排名变化',
|
|
|
# `turnover5` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '5日成交额(百万元)',
|
|
|
# `turnover5_change` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '5日成交额变化(百万元)',
|
|
|
# `turnover5_ratio` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '5日成交额占比',
|
|
|
# `turnover5_ratio_change` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '5日成交额占比变化',
|
|
|
# `turnover5_sort` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '5日成交额排名',
|
|
|
# `turnover5_sort_change` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '5日成交额排名变化',
|
|
|
# `turnover10` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '10日成交额(百万元)',
|
|
|
# `turnover10_change` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '10日成交额变化(百万元)',
|
|
|
# `turnover10_ratio` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '10日成交额占比',
|
|
|
# `turnover10_ratio_change` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '10日成交额占比变化',
|
|
|
# `turnover10_sort` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '10日成交额排名',
|
|
|
# `turnover10_sort_change` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '10日成交额排名变化',
|
|
|
# `turnover20` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '20日成交额(百万元)',
|
|
|
# `turnover20_change` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '20日成交额变化(百万元)',
|
|
|
# `turnover20_ratio` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '20日成交额占比',
|
|
|
# `turnover20_ratio_change` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '20日成交额占比变化',
|
|
|
# `turnover20_sort` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '20日成交额排名',
|
|
|
# `turnover20_sort_change` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '20日成交额排名变化',
|
|
|
# `turnover30` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '30日成交额(百万元)',
|
|
|
# `turnover30_change` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '30日成交额变化(百万元)',
|
|
|
# `turnover30_ratio` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '30日成交额占比',
|
|
|
# `turnover30_ratio_change` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '30日成交额占比变化',
|
|
|
# `turnover30_sort` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '30日成交额排名',
|
|
|
# `turnover30_sort_change` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '30日成交额排名变化',
|
|
|
# `rise_number` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '上涨家数',
|
|
|
# `rise_number_change` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '上涨家数变化',
|
|
|
# `losses_number` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '下跌家数',
|
|
|
# `losses_number_change` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '下跌家数变化',
|
|
|
# `flat_number` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '平盘家数',
|
|
|
# `flat_number_change` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '平盘家数变化',
|
|
|
# `rise5_number` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '5日上涨家数',
|
|
|
# `rise5_number_change` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '5日上涨家数变化',
|
|
|
# `losses5_number` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '5日下跌家数',
|
|
|
# `losses5_number_change` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '5日下跌家数变化',
|
|
|
# `flat5_number` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '5日平盘家数',
|
|
|
# `flat5_number_change` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '5日平盘家数变化',
|
|
|
# `rise10_number` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '10日上涨家数',
|
|
|
# `rise10_number_change` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '10日上涨家数变化',
|
|
|
# `losses10_number` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '10日下跌家数',
|
|
|
# `losses10_number_change` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '10日下跌家数变化',
|
|
|
# `flat10_number` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '10日平盘家数',
|
|
|
# `flat10_number_change` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '10日平盘家数变化',
|
|
|
# `rise20_number` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '20日上涨家数',
|
|
|
# `rise20_number_change` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '20日上涨家数变化',
|
|
|
# `losses20_number` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '20日下跌家数',
|
|
|
# `losses20_number_change` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '20日下跌家数变化',
|
|
|
# `flat20_number` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '20日平盘家数',
|
|
|
# `flat20_number_change` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '20日平盘家数变化',
|
|
|
# `rise30_number` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '30日上涨家数',
|
|
|
# `rise30_number_change` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '30日上涨家数变化',
|
|
|
# `losses30_number` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '30日下跌家数',
|
|
|
# `losses30_number_change` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '30日下跌家数变化',
|
|
|
# `flat30_number` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '30日平盘家数',
|
|
|
# `flat30_number_change` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '30日平盘家数变化',
|
|
|
# `create_time` datetime(0) NULL DEFAULT NULL COMMENT '创建时间',
|
|
|
|
|
|
#####
|
|
|
# print(datas)
|
|
|
# print(stock_basic_map)
|
|
|
# print(trading_dates)
|
|
|
|
|
|
# 查询数据库A中的数据表a1和a2的数据,并进行关联
|
|
|
#db_a_cursor.execute('SELECT a1.id, a1.date, a1.user, a2.userName, a2.count FROM a1 JOIN a2 ON a1.id = a2.id')
|
|
|
#data_to_transfer = db_a_cursor.fetchall()
|
|
|
|
|
|
# 删除数据库B中表c的数据(可选,如果需要覆盖表c的数据)
|
|
|
# db_b_cursor.execute('DELETE FROM c')
|
|
|
|
|
|
# 插入数据到数据库B中的表c中
|
|
|
# for row in data_to_transfer:
|
|
|
# id, date, user, userName, count = row
|
|
|
# sql_insert = f"INSERT INTO c (id, date, user, userName, count) VALUES (%s, %s, %s, %s, %s)"
|
|
|
# db_b_cursor.execute(sql_insert, (id, date, user, userName, count))
|
|
|
|
|
|
# 提交数据到数据库B中
|
|
|
# db_b_conn.commit()
|
|
|
|
|
|
print("数据传输完成!")
|
|
|
|
|
|
except Exception as e:
|
|
|
print(f"出现错误:{e}")
|
|
|
|
|
|
finally:
|
|
|
# 关闭连接
|
|
|
if db_a_cursor:
|
|
|
db_a_cursor.close()
|
|
|
if db_a_conn:
|
|
|
db_a_conn.close()
|
|
|
|
|
|
if db_b_cursor:
|
|
|
db_b_cursor.close()
|
|
|
if db_b_conn:
|
|
|
db_b_conn.close()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
main()
|
|
|
|