1 #-*- coding: utf-8 -*-
2 importpymysql3 from datetime importdatetime4 from datetime importtimedelta5 importtime,yaml6 importpdb,json7
8 defget_key_by_elenment(element):9
10 key=''
11 if element=='rain_20':12 key='PRE_DAY_20_20'
13 elif element=='tem_ave':14 key='TEM_DAY_AVG'
15 elif element=='tem_max':16 key='TEM_DAY_MAX'
17 elif element=='tem_min':18 key='TEM_DAY_MIN'
19
20 returnkey21 defget_history_surf(start_time,end_time,element):22
23 key=get_key_by_elenment(element)24 #获取全国历史站点数据 目前能查 2001到2014年的历史数据 2739个地面站
25 time1=datetime.strptime(start_time+'0000',"%Y%m%d%H%M%S")26 time2=datetime.strptime(end_time+'0000',"%Y%m%d%H%M%S")27
28 st_time=time1.strftime("%Y-%m-%d %H:%M:%S")29 ed_time=time2.strftime("%Y-%m-%d %H:%M:%S")30
31 #打开数据库连接
32 db = pymysql.connect("*****","user","pwd","表名", port=19100)33 #使用 cursor() 方法创建一个游标对象 cursor 1990-01-03 00:00:00
34 cursor =db.cursor()35 sql="select STATIONID ,LAT,LON,ALT,D_DATETIME,%s from history_surf_cli_chn_mul_day where D_DATETIME between ' %s' and '%s'" %(key,st_time,ed_time) +"and STATIONID like '5%'"
36 #使用 execute() 方法执行 SQL 查询
37 #pdb.set_trace()
38 #print(st_time,ed_time)
39 print(sql)40 cursor.execute(sql)41 #使用 fetchone() 方法获取单条数据.
42 data =cursor.fetchall()43 #for da in data[:] :
44 #print(da)
45
46 db.close()47
48 returndata49 defget_stn_by_region(level,region):50
51 #判断区域 分别运行 不同的sql
52 if level== 'area':53 info=get_yaml_data(r'E:\HUAXIN\huaxin-qifu\gww\yushuai\src\insure\region.yaml')54
55 if region ininfo:56 admincodes=info[region]['sid'] #.split(',')
57 pid =info[region]['pid']58 else:59 print('wrong info') #stationId
60
61 sql="select * from taiping_sta_info_surf_chn1 WHERE adminCode in (%s)"%(admincodes)62 print(sql)63 #pdb.set_trace()
64 elif level=='pro':65 sql="select * from taiping_sta_info_surf_chn1 WHERE provinceCode in (%s)"%(region)66 elif level=='county':67 sql="select * from taiping_sta_info_surf_chn1 WHERE adminCode in (%s)"%(region)68 else:69 print('wrong input')70
71 db = pymysql.connect("*","*","*","*", port=19100)72 #使用 cursor() 方法创建一个游标对象 cursor 1990-01-03 00:00:00
73 cursor =db.cursor()74 #使用 execute() 方法执行 SQL 查询
75 #pdb.set_trace()
76 cursor.execute(sql)77 #使用 fetchone() 方法获取单条数据.
78 data =cursor.fetchall()79 #for da in data[:] :
80 #print(da)
81 #print ("Database version : %s " % data)
82 #关闭数据库连接
83 db.close()84
85 returndata86
87
88
89 defget_yaml_data(yaml_file):90 #打开yaml文件
91 #print("***获取yaml文件数据***")
92 file = open(yaml_file, 'r', encoding="utf-8")93 file_data =file.read()94 file.close()95
96 #print(file_data)
97 #print("类型:", type(file_data))
98
99 #将字符串转化为字典或列表
100 #print("***转化yaml数据为字典或列表***")
101 #pdb.set_trace()
102 data =yaml.load(file_data)103 #print(data)
104 #print("类型:", type(data))
105 #pdb.set_trace()
106 returndata107
108 defmain1():109 all_city={}110 with open(r'E:\HUAXIN\huaxin-qifu\gww\yushuai\src\insure\DATA\county1.txt','r', encoding="utf-8") as f:111 lines=f.readlines()112 for line inlines:113 #pdb.set_trace()
114 #print(line.split('\t')[1][1:] )
115 all_city.update({line.split('\t')[1][1:]:line.split('\t')[0]})116
117
118 workbook=openpyxl.load_workbook(r'C:\Users\YS\Desktop\111.xlsx')119
120 worksheet=workbook.worksheets[0]121
122 for index,row inenumerate(worksheet.rows):123
124 if index==0:125 print(row[8].value) #每一行的一个row[0]就是第一列
126 else:127 #print(row[8].value)
128 #pdb.set_trace()
129 if row[8].value inall_city:130 row[5].value=all_city[row[8].value]131 print(row[8].value,all_city[row[8].value])132
133 workbook.save(filename=r'C:\Users\YS\Desktop\111.xlsx')134
135 if __name__ == '__main__':136
137 #data=get_history_surf('2010101010','2010101110','tem_ave') # 接收时间段 要素
138 #data=get_stn_by_region('area','DongBei') # 传入区域返回对应区域的站点信息 参数 [area 区域名称] [pro admincode] [county admincode]
139 #data=get_stn_by_region('pro','110000') # 传入区域返回对应区域的站点信息 参数 area 区域 pro 省 county 县
140 data=get_stn_by_region('county','110107') #传入区域返回对应区域的站点信息 参数 area 区域 pro 省 county 县
141 print(len(data))