class TableManager(ObjectManager): caption = "Tables" klass = "db.Table" node_name = "tables" icon_column = 0 table_names = None show_query = "show table status from `%(schema)s` where Comment <> 'VIEW'" name_column = 0 columns = [("Name", IconStringColumnType, "Name", 180, None), ("Engine", StringColumnType, "Engine", 60, None), ("Version", StringColumnType, "Version", 50, None), ("Row_format", StringColumnType, "Row Format", 100, None), ("Rows", LongIntegerColumnType, "Rows", 80, None), ("Avg_row_length", LongIntegerColumnType, "Avg Row Length", 100, None), ({'field' : "Data_length", 'format_func' : lambda x: human_size(long(x)) if x else ""}, NumberWithUnitColumnType, "Data Length", 100, None), ({'field' : "Max_data_length", 'format_func' : lambda x: human_size(long(x)) if x else ""}, NumberWithUnitColumnType, "Max Data Length", 100, None), ({'field' : "Index_length", 'format_func' : lambda x: human_size(long(x)) if x else ""}, NumberWithUnitColumnType, "Index Length", 100, None), ({'field' : "Data_free", 'format_func' : lambda x: human_size(long(x)) if x else ""}, NumberWithUnitColumnType, "Data Free", 80, None), ("Auto_increment", LongIntegerColumnType, "Auto Increment", 80, None), ("Create_time", StringColumnType, "Create Time", 150, None), ("Update_time", StringColumnType, "Update Time", 150, None), ("Check_time", StringColumnType, "Check Time", 150, None), ("Collation", StringColumnType, "Collation", 100, None), ("Checksum", StringColumnType, "Checksum", 80, None), ("Comment", StringColumnType, "Comment", 500, None) ] def is_row_corrupted(self, rset): return not rset.stringFieldValueByName("Engine") def refresh(self): self.table_names = [] ObjectManager.refresh(self) def filter(self, rset): self.table_names.append(rset.stringFieldValueByName("Name")) return True def get_selection(self): selection = [] for node in self.tree.get_selection(): obj = grt.classes.db_query_LiveDBObject() obj.name = node.get_string(self.name_column) obj.schemaName = self.schema obj.type = self.klass selection.append(obj) return selection
def refresh(self): try: rset = self.editor.executeManagementQuery( "select * from information_schema.schemata WHERE schema_name = '%s'" % self._schema, 0) except grt.DBError as e: log_error( "select * from information_schema.schemata WHERE schema_name = '%s' : %s\n" % (self._schema, e)) rset = None if rset: ok = rset.goToFirstRow() if ok: for col in rset.columns: if hasattr(self, "col_%s" % col.name.lower()): getattr(self, "col_%s" % col.name.replace(" ", "_").lower()).set_text( rset.stringFieldValueByName(col.name)) try: rset = self.editor.executeManagementQuery( "select sum(data_length) + sum(index_length) database_size,count(*) table_count from information_schema.tables WHERE table_schema = '%s'" % self._schema, 0) except grt.DBError as e: log_error( "select sum(data_length) + sum(index_length) database_size,count(*) table_count from information_schema.tables WHERE table_schema = '%s' : %s\n" % (self._schema, e)) rset = None if rset: ok = rset.goToFirstRow() if ok: self.database_size.set_text( human_size(rset.floatFieldValueByName("database_size"))) self.table_count.set_text( rset.stringFieldValueByName("table_count"))
try: rset = self.editor.executeManagementQuery( "select sum(data_length) + sum(index_length) database_size,count(*) table_count from information_schema.tables WHERE table_schema = '%s'" % self._schema, 0) except grt.DBError, e: log_error( "select sum(data_length) + sum(index_length) database_size,count(*) table_count from information_schema.tables WHERE table_schema = '%s' : %s\n" % (self._schema, e)) rset = None if rset: ok = rset.goToFirstRow() if ok: self.database_size.set_text( human_size(rset.intFieldValueByName("database_size"))) self.table_count.set_text( rset.stringFieldValueByName("table_count")) class SchemaManager(mforms.AppView): def __init__(self, editor, schema_name): mforms.AppView.__init__(self, False, "schema_inspector", False) self.editor = editor self.tabview = mforms.newTabView() self.add(self.tabview, True, True) self.pages = []
if ok: for col in rset.columns: if hasattr(self, "col_%s" % col.name.lower()): getattr(self, "col_%s" % col.name.replace(" ", "_").lower()).set_text(rset.stringFieldValueByName(col.name)) try: rset = self.editor.executeManagementQuery("select sum(data_length) + sum(index_length) database_size,count(*) table_count from information_schema.tables WHERE table_schema = '%s'" % self._schema, 0) except grt.DBError, e: log_error("select sum(data_length) + sum(index_length) database_size,count(*) table_count from information_schema.tables WHERE table_schema = '%s' : %s\n" % (self._schema, e)) rset = None if rset: ok = rset.goToFirstRow() if ok: self.database_size.set_text(human_size(rset.floatFieldValueByName("database_size"))) self.table_count.set_text(rset.stringFieldValueByName("table_count")) class SchemaManager(mforms.AppView): def __init__(self, editor, schema_name): mforms.AppView.__init__(self, False, "schema_inspector", False) self.editor = editor self.tabview = mforms.newTabView() self.add(self.tabview, True, True) self.pages = [] tabs = [SchemaInfoPanel, TableManagerParent, ColumnManager, IndexManager, TriggerManager, ViewManager, ProcedureManager, FunctionManager, GrantsManager] if self.editor.serverVersion.majorNumber > 5 or (self.editor.serverVersion.majorNumber == 5 and self.editor.serverVersion.minorNumber >= 1):
if ok: for col in rset.columns: if hasattr(self, "col_%s" % col.name.lower()): getattr(self, "col_%s" % col.name.replace(" ", "_").lower()).set_text(rset.stringFieldValueByName(col.name)) try: rset = self.editor.executeManagementQuery("select sum(data_length) + sum(index_length) database_size,count(*) table_count from information_schema.tables WHERE table_schema = '%s'" % self._schema, 0) except grt.DBError, e: log_error("select sum(data_length) + sum(index_length) database_size,count(*) table_count from information_schema.tables WHERE table_schema = '%s' : %s\n" % (self._schema, e)) rset = None if rset: ok = rset.goToFirstRow() if ok: self.database_size.set_text(human_size(rset.intFieldValueByName("database_size"))) self.table_count.set_text(rset.stringFieldValueByName("table_count")) class SchemaManager(mforms.AppView): def __init__(self, editor, schema_name): mforms.AppView.__init__(self, False, "schema_inspector", False) self.editor = editor self.tabview = mforms.newTabView() self.add(self.tabview, True, True) self.pages = []