Selaa lähdekoodia

调整雨情监测

baoyubo 8 kuukautta sitten
vanhempi
commit
1b426262a9
2 muutettua tiedostoa jossa 39 lisäystä ja 5 poistoa
  1. 36 4
      DataGovernance.py
  2. 3 1
      jobs/rainfall_conditions_job.py

+ 36 - 4
DataGovernance.py

@@ -24,9 +24,12 @@ def jwd_to_area(location):
     response = requests.post(url=url, headers=headers, json=location, verify=False)
     if response.status_code == 200:
         try:
-            return response.json()['data'][0]['district']
+            data = response.json()['data'][0]
+            district = data['district']
+            township = data['township']
+            return district,township
         except:
-            return None
+            return None,None
 def put_area(table : str,longitude='longitude',latitude='latitude'):
     conn=None
     cur = None
@@ -44,7 +47,7 @@ def put_area(table : str,longitude='longitude',latitude='latitude'):
         for info in resu:
             id_1 = info[0]
             location = [{"x":info[1],"y":info[2]}]
-            area = jwd_to_area(location)
+            area,township = jwd_to_area(location)
             update_sql = f"UPDATE {table} SET area = %s WHERE id = %s"
             cur.execute(update_sql, (area, id_1))
         conn.commit()  # 提交事务
@@ -56,6 +59,34 @@ def put_area(table : str,longitude='longitude',latitude='latitude'):
         if conn:
             conn.close()
 
+def put_township(table : str,longitude='longitude',latitude='latitude'):
+    conn=None
+    cur = None
+    try:
+        conn = pymysql.connect(host=settings.MYSQL_SERVER,
+                               user=settings.MYSQL_USER,
+                               password=settings.MYSQL_PASSWORD,
+                               database=settings.MYSQL_DB_NAME,
+                               port=settings.MYSQL_PORT,
+                               charset='utf8mb4')
+        cur = conn.cursor()
+        sql = f'select id,{longitude},{latitude} from {table}'
+        cur.execute(sql)
+        resu = cur.fetchall()
+        for info in resu:
+            id_1 = info[0]
+            location = [{"x":info[1],"y":info[2]}]
+            area,township = jwd_to_area(location)
+            update_sql = f"UPDATE {table} SET township = %s WHERE id = %s"
+            cur.execute(update_sql, (township, id_1))
+        conn.commit()  # 提交事务
+    except pymysql.MySQLError as e:
+        print(f"Error: {e}")
+    finally:
+        if cur:
+            cur.close()
+        if conn:
+            conn.close()
 def put_uuid(table,column):
     conn = None
     cur = None
@@ -92,5 +123,6 @@ def put_uuid(table,column):
 # put_area('mid_school')
 # put_area('mid_hospital')
 # put_area('tower_list')
-put_area('govdata_real_time_address')
+# put_area('govdata_real_time_address')
+put_township('govdata_real_time_address')
 

+ 3 - 1
jobs/rainfall_conditions_job.py

@@ -72,7 +72,9 @@ def put_data(db=get_db_local()):
     query = db.query(GovdataRainDataInfo)
     rainfull = get_stcd_data()
     if len(rainfull)>0:
-        db.query(GovdataRainDataInfo).delete()
+        now = datetime.now()
+        twenty_four_hours_ago = now - timedelta(hours=24)
+        db.query(GovdataRainDataInfo).filter(GovdataRainDataInfo.create_time <twenty_four_hours_ago ).delete()
         db.commit()
         for info in rainfull:
             code = info['F3070220000034_000018001']