#导入指数数据
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 > " 2022-01-01 " '
sql_trade = " trading "
db_a_cursor . execute ( sql_trade_qurey , sql_trade )
trading_dates = db_a_cursor . fetchall ( )
for row in trading_dates :
trading_date , week , trade = row
print ( ' start transfer ' , trading_date , ' data. ' )
#查询日交易数据
sql_stock_query = ' select code,trade_day, open,close,high,low,differrange,volumn,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 rise_losses_current_day,dong_cai_industry_index_level2,dong_cai_industry_index_level3,range_rise_losses20,range_rise_losses10,range_rise_losses60,initial_listing_date,number_days_available,volume,turnover,dong_cai_industry_index_code2,free_capitalization,average_volume_day20,total_institutional_positions,rise_stop,losses_stop) 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) "
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 rise_losses_current_day , dong_cai_industry_index_level2 , dong_cai_industry_index_level3 , range_rise_losses20 , range_rise_losses10 , range_rise_losses60 , initial_listing_date , number_days_available , volume , turnover , dong_cai_industry_index_code2 , free_capitalization , average_volume_day20 , total_institutional_positions , rise_stop , losses_stop ) )
#提交数据到数据库B中
db_b_conn . commit ( )
print ( ' successed transfer ' , trading_date , ' data. ' )
print ( ' \r \n ' )
####dong_cai_secondary_industry
# `id` bigint NOT NULL AUTO_INCREMENT,
# `business_date` date NOT NULL COMMENT '业务日期',
# `sort` int DEFAULT NULL COMMENT '排名(序号)',
# `security_code` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '证券代码',
# `security_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '证券名称',
# `security_type` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '证券类型',
# `number_ingredients` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '成份个数',
# `opening_price` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '开盘价',
# `closing_price` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '收盘价',
# `volume` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '成交量(股)',
# `turnover` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '成交额(百万元)',
# `total_capitalization` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '总市值(百万元)',
# `free_capitalization` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '自由流通市值(百万元)',
# `change_percentage` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '涨跌幅(%)',
# `highest_price` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '最高价',
# `lowest_price` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '最低价',
# `rise_number` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '上涨家数',
# `losses_number` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '下跌家数',
# `flat_number` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '平盘家数',
# `rise_stop_number` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '涨停家数',
# `losses_stop_number` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '跌停家数',
# `stop_number` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '停牌家数',
# `recently_high` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '近期创历史新高',
# `recently_low` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '近期创历史新低',
# `pe_ttm` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '市盈率PE(TTM)',
# `pe_center_ttm` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci DEFAULT NULL COMMENT '市盈率PE中位值(TTM)',
# `create_time` datetime 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 ( )