SofianeLasri

RM-MySQL-Manager.py

Mar 11th, 2020
636
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 9.40 KB | None | 0 0
  1. from configparser import ConfigParser
  2. parser = ConfigParser()
  3. parser.read('configuration.ini')
  4.  
  5. import hashlib
  6. import socket
  7. IPaddress=socket.gethostbyname(socket.gethostname())
  8.  
  9. import mysql.connector
  10. from mysql.connector import Error
  11. from mysql.connector import errorcode
  12. from datetime import datetime
  13. today = datetime.today()
  14. curentTime = today.strftime("%Y-%m-%d %H:%M:%S")
  15. import csv
  16.  
  17. radarHash = parser.get('info', 'identifiant')
  18. radarId =  parser.get('info', 'radarBDDID')
  19. configFileModificationDate = parser.get('settings', 'modificationDate')
  20. softwareVersion = parser.get('settings', 'version')
  21. speedLimit = parser.get('settings', 'speedLimit')
  22. maxSpeed = parser.get('settings', 'maxSpeed')
  23. pluieWarning = parser.get('settings', 'pluieWarning')
  24. ventWarning = parser.get('settings', 'ventWarning')
  25. speedMessageLimitText = parser.get('settings', 'speedMessageLimitText')
  26. speedMessageLimitColor = parser.get('settings', 'speedMessageLimitColor')
  27. maxSpeedMessageText = parser.get('settings', 'maxSpeedMessageText')
  28. maxSpeedMessageColor = parser.get('settings', 'maxSpeedMessageColor')
  29. pluieMessage = parser.get('settings', 'pluieMessage')
  30. ventMessage = parser.get('settings', 'ventMessage')
  31. note = parser.get('settings', 'note')
  32. configDataId = parser.get('data', 'dataid')
  33. configDataNumber = parser.get('data', 'datanumber')
  34.  
  35. if radarHash == "":
  36.     reconfigureDB = True
  37.     timeForHash = curentTime.encode('utf-8')
  38.     newHash = hashlib.sha224(timeForHash).hexdigest()
  39.     configFile = open('configuration.ini','r+')
  40.     parser.set('info', 'identifiant', newHash)
  41.     parser.write(configFile)
  42.     configFile.close()
  43.     print ("Un identifiant unique à été généré :", newHash)
  44. else:
  45.     reconfigureDB = False
  46.  
  47. print ("Il est :", curentTime)
  48. import time
  49. starttime=time.time()
  50.  
  51.  
  52. print ("Connexion à la base de données")
  53. try:
  54.     bdd = mysql.connector.connect(host=parser.get('basededonnees', 'host'),
  55.                                          database=parser.get('basededonnees', 'database'),
  56.                                          user=parser.get('basededonnees', 'username'),
  57.                                          password=parser.get('basededonnees', 'password'))
  58.     if bdd.is_connected():
  59.         cursor = bdd.cursor()
  60.         db_Info = bdd.get_server_info()
  61.         print ("Connexion reussie")
  62.         print ("Informations serveur :" ,db_Info)
  63.         if (reconfigureDB == True):
  64.             print ("Inscription du radar dans la base de données")
  65.             GPSCoord = parser.get('info', 'GPSCoord')
  66.             sql_query1 = """INSERT INTO radars (id, hash, locationGps, name, lastHeartbeat, lastIp) VALUES (%s, %s, %s, %s, %s, %s)"""
  67.             sql_values1 = (None, newHash, GPSCoord, "Radar Pedagogique", curentTime, IPaddress)
  68.             cursor.execute(sql_query1, sql_values1)
  69.            
  70.             sql_query2 = """SELECT id FROM radars WHERE hash = '%s'""" % (newHash)
  71.             cursor.execute(sql_query2)
  72.             radarId = cursor.fetchone()
  73.             radarId = radarId[0]
  74.             radarId = str(radarId)
  75.             print ("Le numéro du radar est:", radarId)
  76.             configFile = open('configuration.ini','r+')
  77.             parser.set('info', 'radarBDDID', radarId)
  78.             parser.write(configFile)
  79.             configFile.close()
  80.             reconfigureDB = False
  81.  
  82.         print ("Vérification des informations de configuration")
  83.        
  84.         sql_query = """SELECT modificationDate FROM radarsSettings WHERE radarId = '%s'""" % (radarId)
  85.         cursor.execute(sql_query)
  86.         bddModificationDate = cursor.fetchone()
  87.        
  88.         if (bddModificationDate != None):
  89.             bddModificationDate = bddModificationDate[0]
  90.             bddModificationDate = str(bddModificationDate)
  91.             bddModificationDate = datetime.strptime(bddModificationDate, "%Y-%m-%d %H:%M:%S")
  92.             configFileModificationDate = datetime.strptime(configFileModificationDate, "%Y-%m-%d %H:%M:%S")
  93.            
  94.             if (bddModificationDate>configFileModificationDate):
  95.                 sql_query = """SELECT * FROM radarsSettings WHERE radarId = '%s'""" % (radarId)
  96.                 cursor.execute(sql_query)
  97.                 sql_resultats = cursor.fetchall()
  98.  
  99.                 for row in sql_resultats:
  100.                     configFileModificationDate = row[2]
  101.                     softwareVersion = row[3]
  102.                     speedLimit = row[4]
  103.                     maxSpeed = row[5]
  104.                     pluieWarning = row[6]
  105.                     ventWarning = row[7]
  106.                     speedMessageLimitText = row[8]
  107.                     speedMessageLimitColor = row[9]
  108.                     maxSpeedMessageText = row[10]
  109.                     maxSpeedMessageColor = row[11]
  110.                     pluieMessage = row[12]
  111.                     ventMessage = row[13]
  112.                     note = row[14]
  113.  
  114.                 configFile = open('configuration.ini','r+')
  115.                 parser.set('settings', 'modificationDate', str(configFileModificationDate))
  116.                 parser.set('settings', 'version', str(softwareVersion))
  117.                 parser.set('settings', 'speedLimit', str(speedLimit))
  118.                 parser.set('settings', 'maxSpeed', str(maxSpeed))
  119.                 parser.set('settings', 'pluieWarning', str(pluieWarning))
  120.                 parser.set('settings', 'ventWarning', str(ventWarning))
  121.                 parser.set('settings', 'speedMessageLimitText', str(speedMessageLimitText))
  122.                 parser.set('settings', 'speedMessageLimitColor', str(speedMessageLimitColor))
  123.                 parser.set('settings', 'maxSpeedMessageText', str(maxSpeedMessageText))
  124.                 parser.set('settings', 'maxSpeedMessageColor', str(maxSpeedMessageColor))
  125.                 parser.set('settings', 'pluieMessage', str(pluieMessage))
  126.                 parser.set('settings', 'ventMessage', str(ventMessage))
  127.                 parser.set('settings', 'note', str(note))
  128.  
  129.                 parser.write(configFile)
  130.                 configFile.close()
  131.                 print ("Les Informations de configuration locales ont été mises à jour. Les nouvelles datent du ",bddModificationDate)
  132.             if (bddModificationDate<configFileModificationDate):
  133.                 sql_query = """UPDATE radarsSettings SET modificationDate = %s, version = %s, speedLimit = %s, maxSpeed = %s, pluieWarning = %s, ventWarning = %s, speedMessageLimitText = %s, speedMessageLimitColor = %s, maxSpeedMessageText = %s, maxSpeedMessageColor = %s, pluieMessage = %s, ventMessage = %s, note = %s WHERE radarId= %s"""
  134.                 sql_values = (configFileModificationDate, softwareVersion, speedLimit, maxSpeed, pluieWarning, ventWarning, speedMessageLimitText, speedMessageLimitColor, maxSpeedMessageText, maxSpeedMessageColor, pluieMessage, ventMessage, note, radarId)
  135.                 cursor.execute(sql_query, sql_values)
  136.                 print ("Les Informations de configuration distantes été mises à jour. Les nouvelles datent du ",configFileModificationDate)
  137.         else:
  138.             sql_query = """INSERT INTO radarsSettings (id, radarId, modificationDate, version, speedLimit, maxSpeed, pluieWarning, ventWarning, speedMessageLimitText, speedMessageLimitColor, maxSpeedMessageText, maxSpeedMessageColor, pluieMessage, ventMessage, note) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"""
  139.             sql_values = (None, radarId, configFileModificationDate, softwareVersion, speedLimit, maxSpeed, pluieWarning, ventWarning, speedMessageLimitText, speedMessageLimitColor, maxSpeedMessageText, maxSpeedMessageColor, pluieMessage, ventMessage, note)
  140.             cursor.execute(sql_query, sql_values)
  141.             print ("Les Informations de configuration distantes ont été mises à jour. Les nouvelles datent du ",configFileModificationDate)
  142.  
  143.         print("Lecture du fichier log")
  144.         with open('log.txt') as csv_file:
  145.             csv_reader = csv.reader(csv_file, delimiter=',')
  146.             data_count = 0
  147.             for row in csv_reader:
  148.                 if data_count == 0:
  149.                     data_count += 1
  150.                 else:
  151.                     dataId = row[0]
  152.                     vitesse = row[1]
  153.                     pluie = row[2]
  154.                     vent = row[3]
  155.                     temp = row[4]
  156.                     time = row[5]
  157.                     if (dataId > configDataId):
  158.                         sql_query = """INSERT INTO data (id, radarId, vitesse, pluie, vent, temp, time) VALUES (%s, %s, %s, %s, %s, %s, %s)"""
  159.                         sql_values = (None, radarId, vitesse, pluie, vent, temp, time)
  160.                         cursor.execute(sql_query, sql_values)
  161.                         sql_query = """UPDATE radars SET lastHeartbeat = %s WHERE id= %s"""
  162.                         sql_values = (curentTime, radarId)
  163.                         cursor.execute(sql_query, sql_values)
  164.                     data_count += 1
  165.         configFile = open('configuration.ini','r+')
  166.         parser.set('data', 'dataid', str(dataId))
  167.         parser.set('data', 'datanumber', str(data_count))
  168.         parser.write(configFile)
  169.         configFile.close()
  170.         bdd.commit()
  171.         print ("Les valeurs ont correctement été envoyées!")
  172.  
  173. except mysql.connector.Error as error:
  174.     print("Impossible de se connecter au serveur MySQL {}".format(error))
  175.  
  176. finally:
  177.     if (bdd.is_connected()):
  178.         cursor.close()
  179.         bdd.close()
  180.         print("La connexion MySQL est terminée.")
Advertisement
Add Comment
Please, Sign In to add comment