PgManager: Fix logging, log queries before executing, possible exceptions are logged after. Add tests for RowDict. Add tests.py - runs all tests.
#!/usr/bin/env python3.2
from pgtoolkit import pgbrowser, toolbase, prettysize
class BigTablesTool(toolbase.SimpleTool):
def __init__(self):
toolbase.SimpleTool.__init__(self, name='bigtables', desc='List largest tables.')
self.init()
def main(self):
browser = pgbrowser.PgBrowser(self.pgm.get_conn('target'))
# scan all tables from all shemas, remember names and sizes
all_tables = []
schemas = browser.list_schemas()
for schema in schemas:
tables = browser.list_tables(schema['name'])
for table in tables:
table_name = '%s.%s' % (schema['name'], table['name'])
all_tables.append({'name': table_name, 'size': table['size']})
# print names and sizes of 20 largest tables
for table in sorted(all_tables, reverse=True, key=lambda x: x['size'])[:20]:
print(prettysize.prettysize_short(table['size']).rjust(8), table['name'], sep=' ')
tool = BigTablesTool()
tool.main()