#导入或计算东财二级的成交额及排序等数据 ###当前交易日的计算方法 ###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 getTrends(dbconfig,dbcursor,startDate): trendsMap = {} 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_trend_qurey = 'select blemind2,trend_value,trend_value_change,sort,sort_change from trends where trade_day = %s and type = %s' dbcursor.execute(sql_trend_qurey,(startDate,'1')) totalTrendsData = dbcursor.fetchall() for row in totalTrendsData: blemind2,trend_value,trend_value_change,sort,sort_change = row trendsMap[industryMap[blemind2]] = {'code': industryMap[blemind2],'sort':sort,'sort_change':sort_change,'trend_value':trend_value,'trend_value_change':trend_value_change, 'sort5':-1,'sort5_change':-1,'trend5_value':-1,'trend5_value_change':-1, 'sort10':-1,'sort10_change':-1,'trend10_value':-1,'trend10_value_change':-1, 'sort20':-1,'sort20_change':-1,'trend20_value':-1,'trend20_value_change':-1, 'sort30':-1,'sort30_change':-1,'trend30_value':-1,'trend30_value_change':-1} sql_trend_qurey = 'select blemind2,trend_value,trend_value_change,sort,sort_change from trends where trade_day = %s and type = %s' dbcursor.execute(sql_trend_qurey,(startDate,'5')) totalTrendsData = dbcursor.fetchall() for row in totalTrendsData: blemind2,trend_value,trend_value_change,sort,sort_change = row if industryMap[blemind2] not in trendsMap: trendsMap[industryMap[blemind2]] = {'code': industryMap[blemind2],'sort':-1,'sort_change':-1,'trend_value':-1,'trend_value_change':-1, 'sort5':sort,'sort5_change':sort_change,'trend5_value':trend_value,'trend5_value_change':trend_value_change, 'sort10':-1,'sort10_change':-1,'trend10_value':-1,'trend10_value_change':-1, 'sort20':-1,'sort20_change':-1,'trend20_value':-1,'trend20_value_change':-1, 'sort30':-1,'sort30_change':-1,'trend30_value':-1,'trend30_value_change':-1} else: trendsMap[industryMap[blemind2]]['sort5'] = sort trendsMap[industryMap[blemind2]]['sort5_change'] = sort_change trendsMap[industryMap[blemind2]]['trend5_value'] = trend_value trendsMap[industryMap[blemind2]]['trend5_value_change'] = trend_value_change sql_trend_qurey = 'select blemind2,trend_value,trend_value_change,sort,sort_change from trends where trade_day = %s and type = %s' dbcursor.execute(sql_trend_qurey,(startDate,'10')) totalTrendsData = dbcursor.fetchall() for row in totalTrendsData: blemind2,trend_value,trend_value_change,sort,sort_change = row if industryMap[blemind2] not in trendsMap: trendsMap[industryMap[blemind2]] = {'code': industryMap[blemind2],'sort':-1,'sort_change':-1,'trend_value':-1,'trend_value_change':-1, 'sort5':-1,'sort5_change':-1,'trend5_value':-1,'trend5_value_change':-1, 'sort10':sort,'sort10_change':sort_change,'trend10_value':trend_value,'trend10_value_change':trend_value_change, 'sort20':-1,'sort20_change':-1,'trend20_value':-1,'trend20_value_change':-1, 'sort30':-1,'sort30_change':-1,'trend30_value':-1,'trend30_value_change':-1} else: trendsMap[industryMap[blemind2]]['sort10'] = sort trendsMap[industryMap[blemind2]]['sort10_change'] = sort_change trendsMap[industryMap[blemind2]]['trend10_value'] = trend_value trendsMap[industryMap[blemind2]]['trend10_value_change'] = trend_value_change sql_trend_qurey = 'select blemind2,trend_value,trend_value_change,sort,sort_change from trends where trade_day = %s and type = %s' dbcursor.execute(sql_trend_qurey,(startDate,'20')) totalTrendsData = dbcursor.fetchall() for row in totalTrendsData: blemind2,trend_value,trend_value_change,sort,sort_change = row if industryMap[blemind2] not in trendsMap: trendsMap[industryMap[blemind2]] = {'code': industryMap[blemind2],'sort':-1,'sort_change':-1,'trend_value':-1,'trend_value_change':-1, 'sort5':-1,'sort5_change':-1,'trend5_value':-1,'trend5_value_change':-1, 'sort10':-1,'sort10_change':-1,'trend10_value':-1,'trend10_value_change':-1, 'sort20':sort,'sort20_change':sort_change,'trend20_value':trend_value,'trend20_value_change':trend_value_change, 'sort30':-1,'sort30_change':-1,'trend30_value':-1,'trend30_value_change':-1} else: trendsMap[industryMap[blemind2]]['sort20'] = sort trendsMap[industryMap[blemind2]]['sort20_change'] = sort_change trendsMap[industryMap[blemind2]]['trend20_value'] = trend_value trendsMap[industryMap[blemind2]]['trend20_value_change'] = trend_value_change sql_trend_qurey = 'select blemind2,trend_value,trend_value_change,sort,sort_change from trends where trade_day = %s and type = %s' dbcursor.execute(sql_trend_qurey,(startDate,'30')) totalTrendsData = dbcursor.fetchall() for row in totalTrendsData: blemind2,trend_value,trend_value_change,sort,sort_change = row if industryMap[blemind2] not in trendsMap: trendsMap[industryMap[blemind2]] = {'code': industryMap[blemind2],'sort':-1,'sort_change':-1,'trend_value':-1,'trend_value_change':-1, 'sort5':-1,'sort5_change':-1,'trend5_value':-1,'trend5_value_change':-1, 'sort10':-1,'sort10_change':-1,'trend10_value':-1,'trend10_value_change':-1, 'sort20':-1,'sort20_change':-1,'trend20_value':-1,'trend20_value_change':-1, 'sort30':sort,'sort30_change':sort_change,'trend30_value':trend_value,'trend30_value_change':trend_value_change} else: trendsMap[industryMap[blemind2]]['sort30'] = sort trendsMap[industryMap[blemind2]]['sort30_change'] = sort_change trendsMap[industryMap[blemind2]]['trend30_value'] = trend_value trendsMap[industryMap[blemind2]]['trend30_value_change'] = trend_value_change return trendsMap 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 sortIndex = 1 sql_trade_period_qurey = 'select code,sum(amount) as turnover from stock_index where trade_day >= %s and trade_day < %s group by code order by amount DESC ' 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,'turnover_sort':sortIndex} sortIndex += 1 return periodTurnOverMap def getPeriodDiff(dbconfig,dbcursor,startDate,endDate,hasData): 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() datasLen = 0 for row in datas: code,close,open,blemind2 = row if close is None: close = Decimal('0') periodStartDataMap[code] = {'code':code,'close':close,'open':open,'blemind2':blemind2} datasLen +=1 if datasLen <= 0: return hasData = True 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 if close is None: close = Decimal('0') 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 Decimal(close) - periodStartDataMap[code]['close'] > 0 : periodDiffMap[industryMap[blemind2]]['rise'] += 1 elif Decimal(close) - periodStartDataMap[code]['close'] == 0 : periodDiffMap[industryMap[blemind2]]['flat'] += 1 else: periodDiffMap[industryMap[blemind2]]['fall'] += 1 else: if Decimal(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 Decimal(close) > 0 : periodDiffMap[industryMap[blemind2]] = {'rise':1,'flat':0,'fall':0} elif Decimal(close) == 0 : periodDiffMap[industryMap[blemind2]] = {'rise':0,'flat':1,'fall':0} else: periodDiffMap[industryMap[blemind2]] = {'rise':0,'flat':0,'fall':1} return periodDiffMap def getPreData(dbconfig,dbcursor,date): preDataMap = {} sql_trade_period_qurey = 'select business_date,security_code,turnover,turnover5,turnover10,turnover20,turnover30,turnover_sort,turnover5_sort,turnover10_sort,turnover20_sort,turnover30_sort,turnover_ratio,turnover5_ratio,turnover10_ratio,turnover20_ratio,turnover30_ratio,rise_number,rise5_number,rise10_number,rise20_number,rise30_number,losses_number,losses5_number,losses10_number,losses20_number,losses30_number,flat_number,flat5_number,flat10_number,flat20_number,flat30_number from dong_cai_secondary_industry_statistics where business_date = %s' dbcursor.execute(sql_trade_period_qurey,date) datas = dbcursor.fetchall() for row in datas: business_date,security_code,turnover,turnover5,turnover10,turnover20,turnover30,turnover_sort,turnover5_sort,turnover10_sort,turnover20_sort,turnover30_sort,turnover_ratio,turnover5_ratio,turnover10_ratio,turnover20_ratio,turnover30_ratio,rise_number,rise5_number,rise10_number,rise20_number,rise30_number,losses_number,losses5_number,losses10_number,losses20_number,losses30_number,flat_number,flat5_number,flat10_number,flat20_number,flat30_number = row preDataMap[security_code] = {'business_date':business_date,'security_code':security_code, 'turnover':turnover,'turnover5':turnover5,'turnover10':turnover10,'turnover20':turnover20,'turnover30':turnover30, 'turnover_sort':turnover_sort,'turnover5_sort':turnover5_sort,'turnover10_sort':turnover10_sort,'turnover20_sort':turnover20_sort,'turnover30_sort':turnover30_sort, 'turnover_ratio':turnover_ratio,'turnover5_ratio':turnover5_ratio,'turnover10_ratio':turnover10_ratio,'turnover20_ratio':turnover20_ratio,'turnover30_ratio':turnover30_ratio, 'rise_number':rise_number,'rise5_number':rise5_number,'rise10_number':rise10_number,'rise20_number':rise20_number,'rise30_number':rise30_number, 'losses_number':losses_number,'losses5_number':losses5_number,'losses10_number':losses10_number,'losses20_number':losses20_number,'losses30_number':losses30_number, 'flat_number':flat_number,'flat5_number':flat5_number,'flat10_number':flat10_number,'flat20_number':flat20_number,'flat30_number':flat30_number} return preDataMap 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 = '2022-03-07' #查询交易日数据 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.') # 获取前一日数据 prevIndustryDataMap = getPreData(db_b_conn,db_b_cursor,period_trading_dateMap['1']) hasPrevIndustryData = len(prevIndustryDataMap) # 获取多日成交额汇总数据 turnOver5 = getPeriodTurnOver(db_a_conn,db_a_cursor,period_trading_dateMap['5'],trading_date) hasTurnOver5 = False if turnOver5 is None else len(turnOver5) > 0 # 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) hasTurnOver10 = False if turnOver10 is None else len(turnOver10) > 0 # 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) hasTurnOver20 = False if turnOver20 is None else len(turnOver20) > 0 # 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) hasTurnOver30 = False if turnOver30 is None else len(turnOver30) > 0 # for data in turnOver30: # industries_tradeDaymap[data]['turnover30'] = turnOver5[data]['turnover'] # 获取涨跌幅数据并统计涨跌幅 hasPeriodUpDownMap5 = False periodUpDownMap5 = getPeriodDiff(db_a_conn,db_a_cursor,period_trading_dateMap['5'],trading_date,hasPeriodUpDownMap5) hasPeriodUpDownMap5 = False if periodUpDownMap5 is None else len(periodUpDownMap5) > 0 hasPeriodUpDownMap10 = False periodUpDownMap10 = getPeriodDiff(db_a_conn,db_a_cursor,period_trading_dateMap['10'],trading_date,hasPeriodUpDownMap10) hasPeriodUpDownMap10 = False if periodUpDownMap10 is None else len(periodUpDownMap10) > 0 hasPeriodUpDownMap20 = False periodUpDownMap20 = getPeriodDiff(db_a_conn,db_a_cursor,period_trading_dateMap['20'],trading_date,hasPeriodUpDownMap20) hasPeriodUpDownMap20 = False if periodUpDownMap20 is None else len(periodUpDownMap20) > 0 hasPeriodUpDownMap30 = False periodUpDownMap30 = getPeriodDiff(db_a_conn,db_a_cursor,period_trading_dateMap['30'],trading_date,hasPeriodUpDownMap30) hasPeriodUpDownMap30 = False if periodUpDownMap30 is None else len(periodUpDownMap30) > 0 trendDatas = getTrends(db_a_conn,db_a_cursor,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 amount 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 = Decimal(prevIndustryDataMap[code]['turnover']) - turnover if hasPrevIndustryData else turnover #todo 从交易数据中获取然后计算 ,一日、多日 sortIndex +=1 # print(type(turnover),type(totalTunrover),type(turnover*Decimal('100.00'))) ratio = (turnover*Decimal('100.00') )/ totalTunrover turnover_ratio = ratio turnover_ratio_change = turnover_ratio - Decimal(prevIndustryDataMap[code]['turnover_ratio']) if hasPrevIndustryData else turnover_ratio #todo turnover_sort_change = turnover_sort - Decimal(prevIndustryDataMap[code]['turnover_sort']) if hasPrevIndustryData else turnover_sort #todo # industries_tradeDaymap[code] = {business_date,security_code,turnover_sort,rise_number,flat_number} # 总成交额 # totalTunrover += turnover # 动量趋势 sort = trendDatas[code]['sort'] if code in trendDatas else Decimal('-1') sort_change = trendDatas[code]['sort_change'] if code in trendDatas else Decimal('-1') sort5 = trendDatas[code]['sort5'] if code in trendDatas else Decimal('-1') sort5_change = trendDatas[code]['sort5_change'] if code in trendDatas else Decimal('-1') sort10 = trendDatas[code]['sort10'] if code in trendDatas else Decimal('-1') sort10_change = trendDatas[code]['sort10_change'] if code in trendDatas else Decimal('-1') sort20 = trendDatas[code]['sort20'] if code in trendDatas else Decimal('-1') sort20_change = trendDatas[code]['sort20_change'] if code in trendDatas else Decimal('-1') sort30 = trendDatas[code]['sort30'] if code in trendDatas else Decimal('-1') sort30_change = trendDatas[code]['sort30_change'] if code in trendDatas else Decimal('-1') trend_value = trendDatas[code]['trend_value'] if code in trendDatas else Decimal('-1') trend_value_change = trendDatas[code]['trend_value_change'] if code in trendDatas else Decimal('-1') trend5_value = trendDatas[code]['trend5_value'] if code in trendDatas else Decimal('-1') trend5_value_change = trendDatas[code]['trend5_value_change'] if code in trendDatas else Decimal('-1') trend10_value = trendDatas[code]['trend10_value'] if code in trendDatas else Decimal('-1') trend10_value_change = trendDatas[code]['trend10_value_change'] if code in trendDatas else Decimal('-1') trend20_value = trendDatas[code]['trend20_value'] if code in trendDatas else Decimal('-1') trend20_value_change = trendDatas[code]['trend20_value_change'] if code in trendDatas else Decimal('-1') trend30_value = trendDatas[code]['trend30_value'] if code in trendDatas else Decimal('-1') trend30_value_change = trendDatas[code]['trend30_value_change'] if code in trendDatas else Decimal('-1') # turnover_change = '' #todo # turnover_ratio_change = '' #todo # turnover_sort_change = ''#todo turnover5 = Decimal(turnOver5[code]['turnover']) if hasTurnOver5 else turnover #todo turnover5_change = turnover5 - Decimal(prevIndustryDataMap[code]['turnover5']) if hasPrevIndustryData else turnover5 #todo turnover5_ratio = (turnover5*Decimal('100.00') )/ Decimal(turnOver5[code]['total']) if hasTurnOver5 else ratio #todo turnover5_ratio_change = turnover5_ratio - Decimal(prevIndustryDataMap[code]['turnover5_ratio']) if hasPrevIndustryData else turnover5_ratio #todo turnover5_sort = Decimal(turnOver5[code]['turnover_sort']) if hasTurnOver5 else turnover_sort #todo turnover5_sort_change = Decimal(prevIndustryDataMap[code]['turnover5_sort']) - turnover5_sort if hasPrevIndustryData else turnover5_sort #todo turnover10 = Decimal(turnOver10[code]['turnover']) if hasTurnOver10 else turnover #todo turnover10_change = turnover10 - Decimal(prevIndustryDataMap[code]['turnover10']) if hasPrevIndustryData else turnover10 #todo turnover10_ratio = (turnover10*Decimal('100.00') )/ Decimal(turnOver10[code]['total']) if hasTurnOver10 else ratio #todo turnover10_ratio_change = turnover10_ratio - Decimal(prevIndustryDataMap[code]['turnover10_ratio']) if hasPrevIndustryData else turnover10_ratio #todo turnover10_sort = Decimal(turnOver10[code]['turnover_sort']) if hasTurnOver10 else turnover_sort #todo turnover10_sort_change = Decimal(prevIndustryDataMap[code]['turnover10_sort']) - turnover10_sort if hasPrevIndustryData else turnover10_sort #todo turnover20 = Decimal(turnOver20[code]['turnover']) if hasTurnOver20 else turnover #todo turnover20_change = turnover20 - Decimal(prevIndustryDataMap[code]['turnover20']) if hasPrevIndustryData else turnover20 #todo turnover20_ratio = (turnover20*Decimal('100.00') )/ Decimal(turnOver20[code]['total']) if hasTurnOver20 else ratio #todo turnover20_ratio_change = turnover20_ratio - Decimal(prevIndustryDataMap[code]['turnover20_ratio']) if hasPrevIndustryData else turnover20_ratio #todo turnover20_sort = Decimal(turnOver20[code]['turnover_sort']) if hasTurnOver20 else turnover_sort #todo turnover20_sort_change = Decimal(prevIndustryDataMap[code]['turnover20_sort']) - turnover20_sort if hasPrevIndustryData else turnover20_sort #todo turnover30 = Decimal(turnOver30[code]['turnover']) if hasTurnOver30 else turnover #todo turnover30_change = turnover30 - Decimal(prevIndustryDataMap[code]['turnover30']) if hasPrevIndustryData else turnover30 #todo turnover30_ratio = (turnover30*Decimal('100.00') )/ Decimal(turnOver30[code]['total']) if hasTurnOver30 else ratio #todo turnover30_ratio_change = turnover30_ratio - Decimal(prevIndustryDataMap[code]['turnover30_ratio']) if hasPrevIndustryData else turnover30_ratio #todo turnover30_sort = Decimal(turnOver30[code]['turnover_sort']) if hasTurnOver30 else turnover_sort #todo turnover30_sort_change = Decimal(prevIndustryDataMap[code]['turnover30_sort']) - turnover30_sort if hasPrevIndustryData else turnover30_sort #todo rise_number = risenum flat_number = flatnum losses_number = fallnum rise_number_change = rise_number - Decimal(prevIndustryDataMap[code]['rise_number']) if hasPrevIndustryData else rise_number #todo losses_number_change = losses_number - Decimal(prevIndustryDataMap[code]['losses_number']) if hasPrevIndustryData else losses_number #todo flat_number_change = flat_number - Decimal(prevIndustryDataMap[code]['flat_number']) if hasPrevIndustryData else flat_number #todo rise5_number = Decimal(periodUpDownMap5[code]['rise']) #todo rise5_number_change = rise5_number - Decimal(prevIndustryDataMap[code]['rise5_number']) if hasPrevIndustryData else rise5_number #todo losses5_number = Decimal(periodUpDownMap5[code]['fall']) #todo losses5_number_change = losses5_number - Decimal(prevIndustryDataMap[code]['losses5_number']) if hasPrevIndustryData else losses5_number #todo flat5_number = Decimal(periodUpDownMap5[code]['flat']) #todo flat5_number_change = flat5_number - Decimal(prevIndustryDataMap[code]['flat5_number']) if hasPrevIndustryData else flat5_number #todo rise10_number = Decimal(periodUpDownMap10[code]['rise']) #todo rise10_number_change = rise10_number - Decimal(prevIndustryDataMap[code]['rise10_number']) if hasPrevIndustryData else rise10_number #todo losses10_number = Decimal(periodUpDownMap10[code]['fall']) #todo losses10_number_change = losses10_number - Decimal(prevIndustryDataMap[code]['losses10_number']) if hasPrevIndustryData else losses10_number #todo flat10_number = Decimal(periodUpDownMap10[code]['flat']) #todo flat10_number_change = flat10_number - Decimal(prevIndustryDataMap[code]['flat10_number']) if hasPrevIndustryData else flat10_number #todo rise20_number = Decimal(periodUpDownMap20[code]['rise']) #todo rise20_number_change = rise20_number - Decimal(prevIndustryDataMap[code]['rise20_number']) if hasPrevIndustryData else rise20_number#todo losses20_number = Decimal(periodUpDownMap20[code]['fall']) #todo losses20_number_change = losses20_number - Decimal(prevIndustryDataMap[code]['losses20_number']) if hasPrevIndustryData else losses20_number #todo flat20_number = Decimal(periodUpDownMap20[code]['flat']) #todo flat20_number_change = flat20_number - Decimal(prevIndustryDataMap[code]['flat20_number']) if hasPrevIndustryData else flat20_number #todo rise30_number = Decimal(periodUpDownMap30[code]['rise']) #todo rise30_number_change = rise30_number - Decimal(prevIndustryDataMap[code]['rise30_number']) if hasPrevIndustryData else rise30_number #todo losses30_number = Decimal(periodUpDownMap30[code]['fall']) #todo losses30_number_change = losses30_number - Decimal(prevIndustryDataMap[code]['losses30_number']) if hasPrevIndustryData else losses30_number #todo flat30_number = Decimal(periodUpDownMap30[code]['flat']) #todo flat30_number_change = flat30_number - Decimal(prevIndustryDataMap[code]['flat30_number']) if hasPrevIndustryData else flat30_number #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, 'sort':sort,'sort_change':sort_change,'trend_value':trend_value,'trend_value_change':trend_value_change, 'sort5':sort5,'sort5_change':sort5_change,'trend5_value':trend5_value,'trend5_value_change':trend5_value_change, 'sort10':sort10,'sort10_change':sort10_change,'trend10_value':trend10_value,'trend10_value_change':trend10_value_change, 'sort20':sort20,'sort20_change':sort20_change,'trend20_value':trend20_value,'trend20_value_change':trend20_value_change, 'sort30':sort30,'sort30_change':sort30_change,'trend30_value':trend30_value,'trend30_value_change':trend30_value_change} # 构建数据并存入数据库 sql_insert = f"INSERT INTO dong_cai_secondary_industry_statistics (business_date,security_code,security_name,turnover,turnover_change,turnover_ratio,turnover_ratio_change,turnover_sort,turnover_sort_change, turnover5,turnover5_change,turnover5_ratio,turnover5_ratio_change,turnover5_sort,turnover5_sort_change,turnover10,turnover10_change,turnover10_ratio,turnover10_ratio_change,turnover10_sort,turnover10_sort_change,turnover20,turnover20_change,turnover20_ratio,turnover20_ratio_change,turnover20_sort,turnover20_sort_change, turnover30,turnover30_change,turnover30_ratio,turnover30_ratio_change,turnover30_sort,turnover30_sort_change,rise_number,rise_number_change,losses_number,losses_number_change,flat_number,flat_number_change, rise5_number,rise5_number_change,losses5_number,losses5_number_change,flat5_number,flat5_number_change, rise10_number,rise10_number_change,losses10_number,losses10_number_change,flat10_number,flat10_number_change, rise20_number,rise20_number_change,losses20_number,losses20_number_change,flat20_number,flat20_number_change, rise30_number,rise30_number_change,losses30_number,losses30_number_change,flat30_number,flat30_number_change,sort,sort_change,trend_value,trend_value_change,sort5,sort5_change,trend5_value,trend5_value_change,sort10,sort10_change,trend10_value,trend10_value_change,sort20,sort20_change,trend20_value,trend20_value_change,sort30,sort30_change,trend30_value,trend30_value_change) 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 ,%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, %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, %s, %s, %s, %s, %s, %s, %s, %s)" db_b_cursor.execute(sql_insert, (business_date,security_code,security_name,turnover,turnover_change,turnover_ratio,turnover_ratio_change,turnover_sort,turnover_sort_change, turnover5,turnover5_change,turnover5_ratio,turnover5_ratio_change,turnover5_sort,turnover5_sort_change,turnover10,turnover10_change,turnover10_ratio,turnover10_ratio_change,turnover10_sort,turnover10_sort_change,turnover20,turnover20_change,turnover20_ratio,turnover20_ratio_change,turnover20_sort,turnover20_sort_change, turnover30,turnover30_change,turnover30_ratio,turnover30_ratio_change,turnover30_sort,turnover30_sort_change,rise_number,rise_number_change,losses_number,losses_number_change,flat_number,flat_number_change, rise5_number,rise5_number_change,losses5_number,losses5_number_change,flat5_number,flat5_number_change, rise10_number,rise10_number_change,losses10_number,losses10_number_change,flat10_number,flat10_number_change, rise20_number,rise20_number_change,losses20_number,losses20_number_change,flat20_number,flat20_number_change, rise30_number,rise30_number_change,losses30_number,losses30_number_change,flat30_number,flat30_number_change,sort,sort_change,trend_value,trend_value_change,sort5,sort5_change,trend5_value,trend5_value_change,sort10,sort10_change,trend10_value,trend10_value_change,sort20,sort20_change,trend20_value,trend20_value_change,sort30,sort30_change,trend30_value,trend30_value_change)) # 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()