You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
utils/transferIndustrySatistics_p...

240 lines
15 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

#导入或计算东财二级的成交额及排序等数据
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()
periodIndex = 0
for trading_date in trading_period_dates:
if periodIndex == 0:
period_trading_dateMap['1',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'
db_a_cursor.execute(sql_stock_query,trading_date)
datas = db_a_cursor.fetchall()
sortIndex = 1
#遍历数据,并组装数据,转存到目标库中
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
sort = sortIndex
sortIndex +=1
security_code = code
security_name = name
security_type = 'EI'
number_ingredients = componentnum
opening_price = open
closing_price = close
volume = volumn
turnover = amount
total_capitalization = mv
free_capitalization = liqmv
change_percentage = differrange
highest_price = high
lowest_price = low
rise_number = risenum
losses_number = fallnum
flat_number = flatnum
rise_stop_number = limitupnum
losses_stop_number = limitdownnum
stop_number = suspendnum
recently_high = rcnthigh
recently_low = rcntlow
pe_ttm= pettm
pe_center_ttm = pettm_mid
# 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))
#提交数据到数据库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()