#导入新高新低数据 import pymysql def toTransNewRecordData(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日 # sql_trade_qurey = 'select date,week,trade from trade_dates where trade = %s and date > %s' 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,trade_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 newrecord data ',trading_date , ' data.') # if trading_date == '2023-08-11': # print('break then finished transfer newrecord ',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() 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() 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' toTransNewRecordData(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()