#导入或计算东财二级的成交额及排序等数据
###当前交易日的计算方法
###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 = ( turnover5 * Decimal ( ' 100.00 ' ) ) / turnOver5 [ code ] [ ' total ' ] #todo
turnover5_ratio_change = ' ' #todo
turnover5_sort = ' ' #todo
turnover5_sort_change = ' ' #todo
turnover10 = turnOver10 [ code ] [ ' turnover ' ] #todo
turnover10_change = ' ' #todo
turnover10_ratio = ( turnover10 * Decimal ( ' 100.00 ' ) ) / turnOver10 [ code ] [ ' total ' ] #todo
turnover10_ratio_change = ' ' #todo
turnover10_sort = ' ' #todo
turnover10_sort_change = ' ' #todo
turnover20 = turnOver20 [ code ] [ ' turnover ' ] #todo
turnover20_change = ' ' #todo
turnover20_ratio = ( turnover20 * Decimal ( ' 100.00 ' ) ) / turnOver20 [ code ] [ ' total ' ] #todo
turnover20_ratio_change = ' ' #todo
turnover20_sort = ' ' #todo
turnover20_sort_change = ' ' #todo
turnover30 = turnOver30 [ code ] [ ' turnover ' ] #todo
turnover30_change = ' ' #todo
turnover30_ratio = ( turnover30 * Decimal ( ' 100.00 ' ) ) / turnOver30 [ code ] [ ' total ' ] #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 = periodUpDownMap5 [ code ] [ ' rise ' ] #todo
rise5_number_change = ' ' #todo
losses5_number = periodUpDownMap5 [ code ] [ ' fall ' ] #todo
losses5_number_change = ' ' #todo
flat5_number = periodUpDownMap5 [ code ] [ ' flat ' ] #todo
flat5_number_change = ' ' #todo
rise10_number = periodUpDownMap10 [ code ] [ ' rise ' ] #todo
rise10_number_change = ' ' #todo
losses10_number = periodUpDownMap10 [ code ] [ ' fall ' ] #todo
losses10_number_change = ' ' #todo
flat10_number = periodUpDownMap10 [ code ] [ ' flat ' ] #todo
flat10_number_change = ' ' #todo
rise20_number = periodUpDownMap20 [ code ] [ ' rise ' ] #todo
rise20_number_change = ' ' #todo
losses20_number = periodUpDownMap20 [ code ] [ ' fall ' ] #todo
losses20_number_change = ' ' #todo
flat20_number = periodUpDownMap20 [ code ] [ ' flat ' ] #todo
flat20_number_change = ' ' #todo
rise30_number = periodUpDownMap30 [ code ] [ ' rise ' ] #todo
rise30_number_change = ' ' #todo
losses30_number = periodUpDownMap30 [ code ] [ ' fall ' ] #todo
losses30_number_change = ' ' #todo
flat30_number = periodUpDownMap30 [ code ] [ ' flat ' ] #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 ( )