DataGovernance.py 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128
  1. # -*- coding: utf-8 -*-
  2. from config import settings
  3. from common.BigDataCenterAPI import *
  4. from utils import *
  5. import pymysql
  6. def jwd_to_area(location):
  7. url = 'https://19.15.75.180:8581/GatewayMsg/http/api/proxy/invoke'
  8. service_code = 'YZT1685418808667'
  9. passid = 'C90-44004428'
  10. passtoken = 'f539f616b2834160bc47fda5f298512c'
  11. signTime = str(GetTime() // 1000)
  12. nonce = GetNonce(5)
  13. sign = GetSign(signTime, nonce, passtoken)
  14. headers = {
  15. 'Content-Type': 'application/json',
  16. 'x-tif-signature': sign,
  17. 'x-tif-timestamp': signTime,
  18. 'x-tif-nonce': nonce,
  19. 'x-tif-paasid': passid,
  20. 'x-tif-serviceId': service_code
  21. }
  22. response = requests.post(url=url, headers=headers, json=location, verify=False)
  23. if response.status_code == 200:
  24. try:
  25. data = response.json()['data'][0]
  26. district = data['district']
  27. township = data['township']
  28. return district,township
  29. except:
  30. return None,None
  31. def put_area(table : str,longitude='longitude',latitude='latitude'):
  32. conn=None
  33. cur = None
  34. try:
  35. conn = pymysql.connect(host=settings.MYSQL_SERVER,
  36. user=settings.MYSQL_USER,
  37. password=settings.MYSQL_PASSWORD,
  38. database=settings.MYSQL_DB_NAME,
  39. port=settings.MYSQL_PORT,
  40. charset='utf8mb4')
  41. cur = conn.cursor()
  42. sql = f'select id,{longitude},{latitude} from {table}'
  43. cur.execute(sql)
  44. resu = cur.fetchall()
  45. for info in resu:
  46. id_1 = info[0]
  47. location = [{"x":info[1],"y":info[2]}]
  48. area,township = jwd_to_area(location)
  49. update_sql = f"UPDATE {table} SET area = %s WHERE id = %s"
  50. cur.execute(update_sql, (area, id_1))
  51. conn.commit() # 提交事务
  52. except pymysql.MySQLError as e:
  53. print(f"Error: {e}")
  54. finally:
  55. if cur:
  56. cur.close()
  57. if conn:
  58. conn.close()
  59. def put_township(table : str,longitude='longitude',latitude='latitude'):
  60. conn=None
  61. cur = None
  62. try:
  63. conn = pymysql.connect(host=settings.MYSQL_SERVER,
  64. user=settings.MYSQL_USER,
  65. password=settings.MYSQL_PASSWORD,
  66. database=settings.MYSQL_DB_NAME,
  67. port=settings.MYSQL_PORT,
  68. charset='utf8mb4')
  69. cur = conn.cursor()
  70. sql = f'select id,{longitude},{latitude} from {table}'
  71. cur.execute(sql)
  72. resu = cur.fetchall()
  73. for info in resu:
  74. id_1 = info[0]
  75. location = [{"x":info[1],"y":info[2]}]
  76. area,township = jwd_to_area(location)
  77. update_sql = f"UPDATE {table} SET township = %s WHERE id = %s"
  78. cur.execute(update_sql, (township, id_1))
  79. conn.commit() # 提交事务
  80. except pymysql.MySQLError as e:
  81. print(f"Error: {e}")
  82. finally:
  83. if cur:
  84. cur.close()
  85. if conn:
  86. conn.close()
  87. def put_uuid(table,column):
  88. conn = None
  89. cur = None
  90. try:
  91. conn = pymysql.connect(host=settings.MYSQL_SERVER,
  92. user=settings.MYSQL_USER,
  93. password=settings.MYSQL_PASSWORD,
  94. database=settings.MYSQL_DB_NAME,
  95. port=settings.MYSQL_PORT,
  96. charset='utf8mb4')
  97. cur = conn.cursor()
  98. sql = f'select distinct {column} from {table}'
  99. cur.execute(sql)
  100. resu = cur.fetchall()
  101. for info in resu:
  102. column_data = info[0]
  103. uid = new_guid()
  104. update_sql = f"UPDATE {table} SET uid = %s WHERE {column} = %s"
  105. cur.execute(update_sql, (uid,column_data))
  106. conn.commit() # 提交事务
  107. except pymysql.MySQLError as e:
  108. print(f"Error: {e}")
  109. finally:
  110. if cur:
  111. cur.close()
  112. if conn:
  113. conn.close()
  114. #put_uuid('rescue_materia','management_unit')
  115. #put_area('emergency_expert')
  116. # put_area('mid_waterlogged_roads','lng','lat')
  117. # put_area('mid_school')
  118. # put_area('mid_hospital')
  119. # put_area('tower_list')
  120. # put_area('govdata_real_time_address')
  121. put_township('govdata_real_time_address')