|
| 1 | +#Arquivo central para reunir as funcoes necessarias para serem aplicadas na smartfarm |
| 2 | +import mysql.connector |
| 3 | +import pandas as pd |
| 4 | +import sqlalchemy |
| 5 | +from sqlalchemy.orm import sessionmaker |
| 6 | +import time |
| 7 | + |
| 8 | + |
| 9 | +class ComandCenter(): |
| 10 | + |
| 11 | + def __init__(self,host_ip,user,password,database,tablename,tags): |
| 12 | + """ |
| 13 | + Construtor central da classe responsavel |
| 14 | + por iniciar as variaveis do codigo |
| 15 | + e iniciar conexao com a base de dados |
| 16 | +
|
| 17 | + Args: |
| 18 | + host_ip (str): ip do host da base de dados |
| 19 | + user (str): usuario para acessar a base de dados |
| 20 | + password (str): senha para acessar a base de dados |
| 21 | + database (str): nome da base de dados a ser acessada |
| 22 | + tablename (str): nome da tabela a ser modificada |
| 23 | + tags (dict): Dicionario dos sensores e valvulas do sistema |
| 24 | + """ |
| 25 | + self.__host = host_ip |
| 26 | + self.__user = user |
| 27 | + self.__pw = password |
| 28 | + self.__dbpath = database |
| 29 | + self._table_name = tablename |
| 30 | + self._db = mysql.connector.connect ( |
| 31 | + host=self.__host, |
| 32 | + user= self.__user, |
| 33 | + password= self.__pw, |
| 34 | + database= self.__dbpath |
| 35 | + ) |
| 36 | + self._cursor = self._db.cursor() |
| 37 | + #TODO:(testar funcionamento do addr) |
| 38 | + addr = 'mysql+pymysql://'+self.__user + ':' + self.__pw + "@" + self.__host + '/' + self.__dbpath |
| 39 | + self._engine = sqlalchemy.create_engine(addr) |
| 40 | + |
| 41 | + def getData(self): |
| 42 | + """ |
| 43 | + Obtem dados da DB e faz print no console |
| 44 | + """ |
| 45 | + df_index = pd.read_sql_query('select * from {self._table_name}',self._engine,index_col='id') |
| 46 | + print(df_index) |
| 47 | + |
| 48 | + def addData(self,data): |
| 49 | + #TODO: Adicionar o Lock.aquire() e Lock.release() |
| 50 | + str_cols = str_cols = ','.join(data.keys()) |
| 51 | + str_values = [] |
| 52 | + str_values.append([data[tag] for tag in data.keys()]) |
| 53 | + sql = f'INSERT INTO {self._table_name} ({str_cols}) VALUES (%s, %s, %s, %s)' |
| 54 | + self._cursor.executemany(sql,str_values) |
| 55 | + print(self._cursor.rowcount, "Dados foram adicionados.") |
| 56 | + |
| 57 | + def removeData(self): |
| 58 | + pass |
| 59 | + |
| 60 | + def getValveState(self): |
| 61 | + pass |
| 62 | + |
| 63 | + def controleValvula(self): |
| 64 | + pass |
0 commit comments