1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#将数据写入 分钟数据表
 
from pymysql import *  # 连接mysql数据库
import pandas as pd
from sqlalchemy import create_engine
 
#----------------------------------写入分钟数据表
 
#返回重组后的列表
def refind_fd(list):  #一条记录,也就是一个列表
    temp=[]
    temp.append(list[2])  #设备编号
    temp.append(list[12]) #上报时间
    temp.append(list[11])  #归属时间
    temp.append(list[6])   #风机电流 6
    temp.append(list[7])   #净化器电流 7
    temp.append(list[4])   #进油烟浓度值
    temp.append(list[5])   #排油烟浓度值
    temp.append(list[13])  #重复的次数
 
    print(temp)
    return temp
 
 
#将列表写入分钟数据表中 
def fd_write_to_SQL(list,con): 
    data = pd.DataFrame(list,columns=['MV_Stat_Code','MV_Create_Time','MV_Data_Time','MV_Fan_Electricity','MV_Purifier_Electricity','MV_Fume_Concentration','MV_Fume_Concentration2','MV_Isduplication'])
    print("写入分数数据表,DateFrame为:")
    print(data)
 
    # test3 要写入的数据表,这样写的话要提前在数据库建好表
    data.to_sql(name="fd_t_minutevalue", con=con, if_exists="append",index=False,index_label=False)
 
    print("分钟数据表写入完成!")
    
#转化 再写入fd_t_minbute表中 
def fd_t_minbute(list,con):  #一页的数据记录 ,con为数据库的建立
    staging=[]    #保存转换后的列表
    for item in list:
        #提取需要的值,并添加其他字段
        staging.append(refind_fd(item))  
    print('分钟数据转化后:')
    for i in staging:
        print(i) 
    fd_write_to_SQL(staging,con)   #将列表写入ea_t_dec表中
 
 
#-------------------------------------------------------------------------------------------------------------
 
def write_all(has_remove_duplicates,con):    #爬取文件中所有店铺(包括特殊的url店铺)    数据库连接对象 ,要爬取的页数,开始时间,结束时间
    fd_t_minbute(has_remove_duplicates,con)              #将指定页数数据写入数据库分钟数据表中 
 
 
engine = create_engine("mysql+pymysql://fumeRemote:feiyu2023@114.215.109.124:3306/fume?charset=utf8")
# 专门读取设备信息表
con_read = engine.connect()
 
def write(data):
    engine = create_engine("mysql+pymysql://fumeRemote:feiyu2023@114.215.109.124:3306/fume?charset=utf8")
    con = engine.connect()
    write_all(data,con)
    con.close()