#导入或计算东财二级的成交额及排序等数据 import pymysql # #数据库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 = {} #查询交易日数据 sql_trade_qurey = 'select date,week,trade from trade_dates where trade = %s and date > "2023-07-27"' sql_trade = "trading" db_a_cursor.execute(sql_trade_qurey,sql_trade) 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_dateMap2 = {} # 用于计算区间涨跌数量等,区间涨跌等需要查询个股 trading_date,week,trade = row # 获取周期 sql_trade_period_qurey = 'select date,week,trade from trade_dates where trade = %s and date <= "2023-07-28" order by date desc limit 30' sql_trade_period = "trading" db_a_cursor.execute(sql_trade_period_qurey,sql_trade_period) trading_period_dates = db_a_cursor.fetchall() #前一个交易日 prevTradeDate = '' periodIndex = 0 for trading_date in trading_period_dates: if periodIndex == 0: period_trading_dateMap['1',trading_date] elif periodIndex == 1: prevTradeDate = trading_date elif periodIndex == 4: period_trading_dateMap['5',trading_date] elif periodIndex == 5: period_trading_dateMap2['5',trading_date] elif periodIndex == 9: period_trading_dateMap['10',trading_date] elif periodIndex == 10: period_trading_dateMap2['10',trading_date] elif periodIndex == 19: period_trading_dateMap['20',trading_date] elif periodIndex == 20: period_trading_dateMap2['20',trading_date] elif periodIndex == 29: period_trading_dateMap['30',trading_date] elif periodIndex == 30: period_trading_dateMap2['30',trading_date] elif periodIndex > 30: break periodIndex += 1 print('start transfer statistics ',trading_date , ' data.') #查询日交易数据 以成交额进行排序 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 = {} totalTunrover = 0.00 #遍历交易日数据 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 = trading_date security_code = code security_name = name turnover = amount turnover_sort = sortIndex sortIndex +=1 rise_number = risenum flat_number = flatnum # industries_tradeDaymap[code] = {business_date,security_code,turnover_sort,rise_number,flat_number} industries_tradeDaymap[code] = {'business_date':business_date,'security_code':security_code,'turnover_sort':turnover_sort,'rise_number':rise_number,'flat_number':flat_number} # 总成交额 totalTunrover += turnover turnover_change = '' #todo turnover_ratio = '' #todo turnover_ratio_change = '' #todo turnover_sort_change = ''#todo turnover5 = '' #todo turnover5_change = '' #todo turnover5_ratio = '' #todo turnover5_ratio_change = '' #todo turnover5_sort = '' #todo turnover5_sort_change = ''#todo turnover10 = '' #todo turnover10_change = '' #todo turnover10_ratio = '' #todo turnover10_ratio_change = '' #todo turnover10_sort = '' #todo turnover10_sort_change = ''#todo turnover20 = '' #todo turnover20_change = '' #todo turnover20_ratio = '' #todo turnover20_ratio_change = '' #todo turnover20_sort = '' #todo turnover20_sort_change = ''#todo turnover30 = '' #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)) #遍历前一日交易数据,及排名数据,获取变化值 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) industries_prevTradeDaymap = {} prevTotalTunrover = 0.00 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 = trading_date security_code = code security_name = name turnover = amount turnover_sort = sortIndex sortIndex +=1 rise_number = risenum flat_number = flatnum # 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_sort':turnover_sort,'rise_number':rise_number,'flat_number':flat_number} # 总成交额 totalTunrover += turnover #提交数据到数据库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()