|
|
#导入动量原始股
|
|
|
import pymysql
|
|
|
|
|
|
def toTransData(db_conn_a,dbcursor_a,db_conn_b,dbcursor_b,trade_date):
|
|
|
# #数据库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()
|
|
|
# 连接数据库A
|
|
|
db_a_conn = db_conn_a
|
|
|
db_a_cursor = dbcursor_a
|
|
|
|
|
|
# 连接数据库B
|
|
|
db_b_conn = db_conn_b
|
|
|
db_b_cursor = dbcursor_b
|
|
|
|
|
|
trans_date = trade_date
|
|
|
|
|
|
stock_basic_map = {}
|
|
|
|
|
|
#查询交易日数据 8月9日,更新数据到8月9日
|
|
|
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()
|
|
|
|
|
|
#查询东财基础数据
|
|
|
industries_map = {}
|
|
|
sql_stockindustry = "select code,name from stock_index where trade_day = '2022-07-01'"
|
|
|
db_a_cursor.execute(sql_stockindustry)
|
|
|
industries = db_a_cursor.fetchall()
|
|
|
for industry in industries:
|
|
|
code,name = industry
|
|
|
industries_map[name] = (code,name)
|
|
|
|
|
|
#查询基础数据
|
|
|
sql_stockbasic = "select code,name,blemind2,blemind3,listdate from stock_basis"
|
|
|
db_a_cursor.execute(sql_stockbasic)
|
|
|
stock_basic_datas = db_a_cursor.fetchall()
|
|
|
for row in stock_basic_datas:
|
|
|
code,name,blemind2,blemind3,listdate = row
|
|
|
if code == '数据来源:东方财富Choice数据' :
|
|
|
continue
|
|
|
# print('stock_basic_datas: ',code,name,blemind2)
|
|
|
stock_basic_map[code] = (code,name,blemind2,blemind3,listdate,industries_map[blemind2][0])
|
|
|
|
|
|
|
|
|
for row in trading_dates:
|
|
|
trading_date,week,trade = row
|
|
|
print('start transfer data ',trading_date , ' data.')
|
|
|
if trading_date == '2023-08-11':
|
|
|
print('break then finish transfer data ',trading_date , ' data.')
|
|
|
break
|
|
|
#查询日交易数据
|
|
|
sql_stock_query = 'select code,trade_day, open,close,high,low,islimit,isdrop,differrange,trade_days,volumn,amount,differrange10,differrange20,differrange60,avg_volume20,freefloat_market_value,total_market_value,agencies_hold from stocks where trade_day = %s'
|
|
|
db_a_cursor.execute(sql_stock_query,trading_date)
|
|
|
datas = db_a_cursor.fetchall()
|
|
|
sortIndex = 1
|
|
|
#遍历数据,并组装数据,转存到目标库中
|
|
|
for stock in datas:
|
|
|
code,trade_day, open,close,high,low,islimit,isdrop,differrange,trade_days,volumn,amount,differrange10,differrange20,differrange60,avg_volume20,freefloat_market_value,total_market_value,agencies_hold = stock
|
|
|
business_date = trading_date
|
|
|
sort = sortIndex
|
|
|
sortIndex +=1
|
|
|
security_code = code
|
|
|
security_name = stock_basic_map[code][1]
|
|
|
security_type = ''
|
|
|
if code[0:2] == '30':
|
|
|
security_type = '30'
|
|
|
elif code[0:2] == '00':
|
|
|
security_type = 'SZ'
|
|
|
elif code[0:2] == '60':
|
|
|
security_type = 'SH'
|
|
|
elif code[0:3] == '688':
|
|
|
security_type = '688'
|
|
|
# print(security_type,security_name,security_code)
|
|
|
opening_price = open
|
|
|
closing_price = close
|
|
|
highest_price = high
|
|
|
lowest_price = low
|
|
|
rise_losses_current_day = differrange
|
|
|
dong_cai_industry_index_level2 = stock_basic_map[code][2]
|
|
|
dong_cai_industry_index_level3 = stock_basic_map[code][3]
|
|
|
range_rise_losses20 = differrange20
|
|
|
range_rise_losses10 = differrange10
|
|
|
range_rise_losses60 = differrange60
|
|
|
initial_listing_date = stock_basic_map[code][4]
|
|
|
number_days_available = trade_days
|
|
|
volume = volumn
|
|
|
turnover = amount
|
|
|
dong_cai_industry_index_code2 = stock_basic_map[code][5]
|
|
|
free_capitalization = freefloat_market_value
|
|
|
average_volume_day20 = avg_volume20
|
|
|
total_institutional_positions = agencies_hold
|
|
|
rise_stop = islimit
|
|
|
losses_stop = isdrop
|
|
|
# create_time =
|
|
|
sql_insert = f"INSERT INTO original_issue_stock (business_date,sort,security_code,security_name,security_type,opening_price,closing_price,highest_price,lowest_price,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)"
|
|
|
db_b_cursor.execute(sql_insert, (business_date,sort,security_code,security_name,security_type,opening_price,closing_price,highest_price,lowest_price,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')
|
|
|
####original_issue_stock
|
|
|
# `business_date` date NOT NULL COMMENT '业务日期',
|
|
|
# `sort` int(0) NULL DEFAULT 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 '证券名称',
|
|
|
# `security_type` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '证券类型',
|
|
|
# `opening_price` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '开盘价',
|
|
|
# `closing_price` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '收盘价',
|
|
|
# `highest_price` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '最高价',
|
|
|
# `lowest_price` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '最低价',
|
|
|
# `rise_losses_current_day` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '当日涨跌幅',
|
|
|
# `dong_cai_industry_index_level2` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '东财行业指数2级',
|
|
|
# `dong_cai_industry_index_level3` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '东财行业指数3级',
|
|
|
# `range_rise_losses20` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '20日区间涨跌幅',
|
|
|
# `range_rise_losses10` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '10日区间涨跌幅',
|
|
|
# `range_rise_losses60` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '60日区间涨跌幅',
|
|
|
# `initial_listing_date` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '首发上市日期',
|
|
|
# `number_days_available` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '可交易日数',
|
|
|
# `volume` 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 '成交额',
|
|
|
# `dong_cai_industry_index_code2` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '所属东财行业指数代码[行业类别]2级',
|
|
|
# `free_capitalization` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '自由流通市值',
|
|
|
# `average_volume_day20` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '20日区间平均成交量',
|
|
|
# `total_institutional_positions` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '机构持仓合计',
|
|
|
# `rise_stop` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '是否涨停 1-是 0-否',
|
|
|
# `losses_stop` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '是否跌停 1-是 0-否',
|
|
|
# `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()
|
|
|
|
|
|
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()
|
|
|
|
|
|
trade_day = '2023-08-09'
|
|
|
|
|
|
toTransData(db_a_conn,db_a_cursor,db_b_conn,db_b_cursor,trade_day)
|
|
|
|
|
|
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() |