import argparse parser = argparse.ArgumentParser(description='generate schema graphs') parser.add_argument('--outputdir', '-o', dest='dir', default='.', help='directory to put generated files') parser.add_argument('--prefix', '-p', dest='prefix', default='aqdb_schema', help='basename of files to generate') opts = parser.parse_args() if not os.path.exists(opts.dir): os.makedirs(opts.dir) from aquilon.config import Config, lookup_file_path config = Config(configfile=lookup_file_path('aqd.conf.mem')) from aquilon.aqdb.db_factory import DbFactory from aquilon.aqdb.model import Base db = DbFactory() Base.metadata.bind = db.engine Base.metadata.create_all() import ms.modulecmd ms.modulecmd.load("fsf/graphviz/2.28.0") from aquilon.aqdb.utils import schema2dot dot = schema2dot.create_schema_graph(metadata=db.meta) dot.write(os.path.join(opts.dir, "%s.dot" % opts.prefix)) dot.write_png(os.path.join(opts.dir, "%s.png" % opts.prefix))
def write_schema_group_png(group): tables = list((db.meta.tables[cls.__tablename__] for cls in model_group[group]['classes'])) pngfile = os.path.join(opts.dir, "%s.%s.png" % (opts.prefix, group)) schema2dot.create_schema_graph(tables=tables).write_png(pngfile)