Quellcode durchsuchen

之江检查空间名称

李莎 vor 2 Jahren
Ursprung
Commit
fa79b01c50
1 geänderte Dateien mit 133 neuen und 114 gelöschten Zeilen
  1. 133 114
      start.py

+ 133 - 114
start.py

@@ -1,10 +1,10 @@
 import json
-from MyUtils.Dingtalk import send_message
 from MyUtils.Dingtalk import send_message_markdown
 import datetime
 import time
 import pymysql
 import pytz
+import os
 
 
 SELECT_BUILDING_SQL = "SELECT zj_building_id,sg_building_id FROM sagacloud_setup.zj_sync_config_building"
@@ -24,123 +24,142 @@ def datetime_now():
     return datetime_now
 
 
-
-# 读取配置文件信息
-with open("config.json", "r") as f:
-    data = json.load(f)
-    mysql = data["mysql"]
-    database = mysql["database"]
-    dingding = data["dingding"]
-
-
 # mysql插入数据
 def insert_mysql(sqls):
-    print("%s 开始往mysql插入数据..."%datetime_now())
+    print("%s 开始往mysql插入数据..." % datetime_now())
     for i in range(0, len(sqls), 1000):
         sqlranges = sqls[i:i + 1000]
         sqlranges = INSERT_BUILDING_ROOMS_SQL + ",".join(sqlranges)
         mysql_cur.execute(sqlranges)
         conn.commit()
-    print("%s mysql数据插入成功,合计%s条..." % (datetime_now(),len(sqls)))
-
-
-
-#钉钉推送消息
-messages = []
-#存储zj_fc表的空间名称
-FC_NAMELIST_DICT = {}
-#存储space表的空间名称
-SPACE_NAMELIST_DICT={}
-
-# 连接mysql
-conn = pymysql.connect(**mysql)
-mysql_cur = conn.cursor()
-
-# 获取建筑列表
-mysql_cur.execute(SELECT_BUILDING_SQL)
-buildinglist = mysql_cur.fetchall()
-
-
-#获取需要对应的点位列表
-mysql_cur.execute(SELECT_STATE_SQL)
-roomid_list = mysql_cur.fetchall()
-roomid_list = [i[0] for i in roomid_list]
-
-
-# 获取zj_fc空间名称
-print("%s 获取zj_fc空间名称..."%datetime_now())
-mysql_cur.execute(SELECT_FC_SQL)
-fc_namelist = mysql_cur.fetchall()
-for building in buildinglist:
-    if building[0] and building[1] != None:
-        for fc_name in fc_namelist:
-            #判断空间是否需要对比
-            if fc_name[2] in roomid_list:
-                if fc_name[0] == building[0]:
-                    FC_NAMELIST_DICT[building[1]+"_"+fc_name[1]] = building[0]+"_"+fc_name[1]
-                    # FC_NAMELIST_DICT[building[1]+"_"+fc_name[1]] = 1
-    else:
-        message = (" - **类型:** 建筑关系未对应 \n" + " - **建筑ID:**  <font color=#FF0000>%s(%s)</font> \n")% (building[0],building[1])
-        print(message)
-        messages.append(message)
-        messages.append("___")
-
-
-# 获取space空间名称
-print("%s 获取space空间名称..."%datetime_now())
-mysql_cur.execute(SELECT_SPACE_SQL)
-space_namelist = mysql_cur.fetchall()
-
-for space in space_namelist:
-    SPACE_NAMELIST_DICT[space[0]+"_"+space[1]] = 1
-
-
-
-# print(FC_NAMELIST_DICT)
-# print(SPACE_NAMELIST_DICT)
-
-
-#对比空间名称,取出差异数据生成sql语句
-sqls = []
-print("%s 开始对比差异数据..."%datetime_now())
-diff_namelist = set(FC_NAMELIST_DICT) - set(SPACE_NAMELIST_DICT)
-if diff_namelist != set():
-    for diff_name in diff_namelist:
-        diff_building_rooms = FC_NAMELIST_DICT[diff_name]
-        diff_building_id = str(diff_building_rooms).split("_")[0]
-        diff_room_name = str(diff_building_rooms).split("_")[1]
-        mysql_cur.execute(SELECT_DIFF_FC_SQL%(diff_building_id,diff_room_name))
-        diff_data = mysql_cur.fetchall()[0]
-        building_name = diff_data[0]
-        floor_id = diff_data[1]
-        floor_name = diff_data[2]
-        state = diff_data[3]
-        type = diff_data[4]
-        sqlline = "('%s','%s','%s','%s','%s','%s','%s','%s')"%(diff_building_id,building_name,diff_room_name,floor_id,floor_name,state,type,datetime_now())
-        sqls.append(sqlline)
-        # message = (" - **building_id:** %s \n" + " - **building_name:** %s \n" + " - **room_name:** %s \n" + " - **type:** %s \n")%(diff_building_id, building_name,diff_room_name,type)
-        # messages.append(message)
-        # messages.append("___")
-    print("%s 差异数据共计%s条..."%(datetime_now(),len(diff_namelist)))
-    message = (" - **类型:** 空间名称未对应 \n" + " - **数量:**  <font color=#FF0000>%s</font> \n") % (len(diff_namelist))
-    messages.append(message)
-    messages.append("___")
-# 获取space空间名称
-print("%s 清空MySQL表数据..."%datetime_now())
-mysql_cur.execute(TRUNCATE_BUILDING_ROOMS_SQL)
-conn.commit()
-
-#往MySQL插入数据
-insert_mysql(sqls)
-
-if messages:
-    messages.append("<font color=#0080FF>详情查看MySQL数据库sagacloud_setup里的zj_sync_building_rooms表</font>")
-    messages_info = "\n".join(messages)
-    # 如果有报警,发送钉钉
-    title = "## **【之江实验室】空间名称报警** "
-    messages_info = title + "\n" +"___"+"\n"+ messages_info
-    print(messages_info)
-    send_message_markdown(title, messages_info, dingding)
-
-mysql_cur.close()
-conn.close()
+    print("%s mysql数据插入成功,合计%s条..." % (datetime_now(), len(sqls)))
+
+
+# # 读取配置文件信息
+# with open("config.json", "r") as f:
+#     data = json.load(f)
+#     mysql = data["mysql"]
+#     database = mysql["database"]
+#     dingding = data["dingding"]
+
+
+
+mysql = {
+    "host": os.getenv("host"),
+    "port": os.getenv("port"),
+    "user": os.getenv("user"),
+    "passwd": os.getenv("passwd"),
+    "database": os.getenv("database")
+}
+database = os.getenv("database")
+dingding = os.getenv("dingding")
+
+while True:
+    time_now = datetime.datetime.fromtimestamp(int(time.time()),
+                                               pytz.timezone('Asia/Shanghai')).strftime('%H:%M:%S')
+    # time_now = time.strftime("%H:%M:%S", time.localtime())  # 刷新
+    am_set_time = "05:00:00"
+    if time_now == am_set_time:  # 此处设置每天定时的时间
+
+
+        #钉钉推送消息
+        messages = []
+        #存储zj_fc表的空间名称
+        FC_NAMELIST_DICT = {}
+        #存储space表的空间名称
+        SPACE_NAMELIST_DICT={}
+
+        # 连接mysql
+        conn = pymysql.connect(**mysql)
+        mysql_cur = conn.cursor()
+
+        # 获取建筑列表
+        mysql_cur.execute(SELECT_BUILDING_SQL)
+        buildinglist = mysql_cur.fetchall()
+
+
+        #获取需要对应的点位列表
+        mysql_cur.execute(SELECT_STATE_SQL)
+        roomid_list = mysql_cur.fetchall()
+        roomid_list = [i[0] for i in roomid_list]
+
+
+        # 获取zj_fc空间名称
+        print("%s 获取zj_fc空间名称..."%datetime_now())
+        mysql_cur.execute(SELECT_FC_SQL)
+        fc_namelist = mysql_cur.fetchall()
+        for building in buildinglist:
+            if building[0] and building[1] != None:
+                for fc_name in fc_namelist:
+                    #判断空间是否需要对比
+                    if fc_name[2] in roomid_list:
+                        if fc_name[0] == building[0]:
+                            FC_NAMELIST_DICT[building[1]+"_"+fc_name[1]] = building[0]+"_"+fc_name[1]
+                            # FC_NAMELIST_DICT[building[1]+"_"+fc_name[1]] = 1
+            else:
+                message = (" - **类型:** 建筑关系未对应 \n" + " - **建筑ID:**  <font color=#FF0000>%s(%s)</font> \n")% (building[0],building[1])
+                print(message)
+                messages.append(message)
+                messages.append("___")
+
+
+        # 获取space空间名称
+        print("%s 获取space空间名称..."%datetime_now())
+        mysql_cur.execute(SELECT_SPACE_SQL)
+        space_namelist = mysql_cur.fetchall()
+
+        for space in space_namelist:
+            SPACE_NAMELIST_DICT[space[0]+"_"+space[1]] = 1
+
+
+
+        # print(FC_NAMELIST_DICT)
+        # print(SPACE_NAMELIST_DICT)
+
+
+        #对比空间名称,取出差异数据生成sql语句
+        sqls = []
+        print("%s 开始对比差异数据..."%datetime_now())
+        diff_namelist = set(FC_NAMELIST_DICT) - set(SPACE_NAMELIST_DICT)
+        if diff_namelist != set():
+            for diff_name in diff_namelist:
+                diff_building_rooms = FC_NAMELIST_DICT[diff_name]
+                diff_building_id = str(diff_building_rooms).split("_")[0]
+                diff_room_name = str(diff_building_rooms).split("_")[1]
+                mysql_cur.execute(SELECT_DIFF_FC_SQL%(diff_building_id,diff_room_name))
+                diff_data = mysql_cur.fetchall()[0]
+                building_name = diff_data[0]
+                floor_id = diff_data[1]
+                floor_name = diff_data[2]
+                state = diff_data[3]
+                type = diff_data[4]
+                sqlline = "('%s','%s','%s','%s','%s','%s','%s','%s')"%(diff_building_id,building_name,diff_room_name,floor_id,floor_name,state,type,datetime_now())
+                sqls.append(sqlline)
+                # message = (" - **building_id:** %s \n" + " - **building_name:** %s \n" + " - **room_name:** %s \n" + " - **type:** %s \n")%(diff_building_id, building_name,diff_room_name,type)
+                # messages.append(message)
+                # messages.append("___")
+            print("%s 差异数据共计%s条..."%(datetime_now(),len(diff_namelist)))
+            message = (" - **类型:** 空间名称未对应 \n" + " - **数量:**  <font color=#FF0000>%s</font> \n") % (len(diff_namelist))
+            messages.append(message)
+            messages.append("___")
+        # 获取space空间名称
+        print("%s 清空MySQL表数据..."%datetime_now())
+        mysql_cur.execute(TRUNCATE_BUILDING_ROOMS_SQL)
+        conn.commit()
+
+        #往MySQL插入数据
+        insert_mysql(sqls)
+
+        #关闭数据库
+        mysql_cur.close()
+        conn.close()
+
+        if messages:
+            print("%s 发送钉钉报警"%datetime_now())
+            messages.append("<font color=#0080FF>详情查看MySQL数据库sagacloud_setup里的zj_sync_building_rooms表</font>")
+            messages_info = "\n".join(messages)
+            # 如果有报警,发送钉钉
+            title = "## **【之江实验室】空间名称报警** "
+            messages_info = title + "\n" +"___"+"\n"+ messages_info
+            send_message_markdown(title, messages_info, dingding)
+