class Table: def __init__(self, name): self.name = name self.columns = [] self.rows = [] def __str__(self): return self.name def __repr__(self): return self.name def _try_parse_int(self, value: str) -> int: try: return int(value) except ValueError: return value def load_from_csv(self, csv_file): with open(csv_file, 'r') as f: reader = f.read().splitlines() # Primeira linha contêm o nome das colunas self.columns = reader[0].split(',') reader.pop(0) for row in reader: row = row.split(',') row_list = [] for column in row: row_list.append(self._try_parse_int(column)) self.rows.append(row_list) def load_from_mysql(self, table_name, cursor): cursor.execute("SELECT * FROM " + table_name) rows = cursor.fetchall() for row in rows: row_list = [] for col in row: row_list.append(col) self.rows.append(row_list) ''' self.rows = [ ["dp001", "Customer Service"] ] ''' cursor.execute("SHOW COLUMNS FROM " + table_name) columns = cursor.fetchall() for row in columns: self.columns.append(row[0]) def save_to_csv(self): f = open("./source/" + self.name + ".csv", "w") # gravar o cabeçalho columns_line = "" for i in range(len(self.columns)): columns_line = columns_line + self.columns[i] if i < len(self.columns) - 1: columns_line = columns_line + "," f.write(columns_line + '\n') for line in range(len(self.rows)): data_line = "" for column in range(len(self.columns)): data_line = data_line + str(self.rows[line][column]) if column < len(self.columns) - 1: data_line = data_line + "," f.write(data_line + '\n') f.close() def print_columns(self, column_list: list, where_filter: list = None, join_stmt: list = None): if column_list[0] == '*': column_list = self.columns print(', '.join(column_list)) print('-' * 20) for row in self.rows: if where_filter is not None: column_index = self.columns.index(where_filter[0]) row_value = row[column_index] if where_filter[1] == '=': if row_value != where_filter[2]: continue elif where_filter[1] == '>': if row_value <= where_filter[2]: continue elif where_filter[1] == '<': if row_value >= where_filter[2]: continue row_values = [] for column in column_list: column_index = self.columns.index(column) row_values.append(row[column_index]) print(', '.join(row_values))