From 90c31127afa76ef27f5b427b276b4e7989c36440 Mon Sep 17 00:00:00 2001 From: laixingyu Date: Tue, 25 Jul 2023 00:25:35 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=A2=9E=E5=8A=A0=E6=96=B0=E9=AB=98?= =?UTF-8?q?=E8=A1=A8=E6=95=B0=E6=8D=AE=E8=BD=AC=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- transferNewrecordData_python.py | 187 ++++++++++++++++++++++++++++++++ 1 file changed, 187 insertions(+) create mode 100644 transferNewrecordData_python.py diff --git a/transferNewrecordData_python.py b/transferNewrecordData_python.py new file mode 100644 index 0000000..4fdfb1f --- /dev/null +++ b/transferNewrecordData_python.py @@ -0,0 +1,187 @@ +#导入新高新低数据 +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-20"' + sql_trade = "trading" + db_a_cursor.execute(sql_trade_qurey,sql_trade) + 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 ',trading_date , ' data.') + 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() + stocks_map = {} + #遍历数据,并组装数据,转存到目标库中 + 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 + stocks_map[code] = (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) + + #查询日交易数据 + sql_stock_query = 'select code,trade_day, isHigh,isLow from stocks_new_record where trade_day = %s' + db_a_cursor.execute(sql_stock_query,trading_date) + datas = db_a_cursor.fetchall() + #遍历数据,并组装数据,转存到目标库中 + for stock_new_record in datas: + code,trade_day, isHigh,isLow = stock_new_record + business_date = trading_date + 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 = stocks_map[code][2] + closing_price = stocks_map[code][3] + highest_price = stocks_map[code][4] + highest_price_of_range = trading_date + change_percentage = stocks_map[code][8] + volume = stocks_map[code][10] + recently_high = isHigh + dong_cai_industry_index_level2 = stock_basic_map[code][2] + day_on_market = stocks_map[code][9] + is_st_stock='' + hit_low_recently = isLow + lowest_price_range = '' + is_star_st_stock = '' + # create_time = + sql_insert = f"INSERT INTO high_low_of_three_hundred (business_date,security_code,security_name,security_type,opening_price,closing_price,highest_price,highest_price_of_range,change_percentage,volume,recently_high,dong_cai_industry_index_level2,day_on_market,is_st_stock,hit_low_recently,lowest_price_range,is_star_st_stock) VALUES ( %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,security_code,security_name,security_type,opening_price,closing_price,highest_price,highest_price_of_range,change_percentage,volume,recently_high,dong_cai_industry_index_level2,day_on_market,is_st_stock,hit_low_recently,lowest_price_range,is_star_st_stock)) + #提交数据到数据库B中 + db_b_conn.commit() + print('successed transfer ',trading_date , ' data.' ) + print('\r\n') + ####high_low_of_three_hundred +# `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 '证券名称', +# `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, +# `highest_price` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, +# `highest_price_of_range` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, +# `change_percentage` 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 '成交量(股)', +# `recently_high` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '近期创阶段新高最新[近N日内]', +# `dong_cai_industry_index_level2` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '东财行业指数2级', +# `day_on_market` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '上市天数', +# `is_st_stock` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '是否为ST股票 1-是 0-否', +# `hit_low_recently` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, +# `lowest_price_range` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL, +# `is_star_st_stock` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '是否为*ST股票 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()