def main(argv=None): usage = """Data Model ERD Generator Generates an entity relationship diagram for the data model specified. If passing a custom URL, the data model returned must be in the JSON format defined by the chop-dbhi/data-models package. The generated diagram is saved to the named output file. Usage: erd.py [options] <model> <version> <outfile> Options: -h --help Show this screen. -u URL --url=URL Retrieve model JSON from this URL instead of the default or environment-variable-passed URL. """ # noqa from docopt import docopt # Ignore command name if called from command line. argv = argv or sys.argv[1:] args = docopt(usage, argv=argv, version=__version__) url = args['--url'] or get_url(args['<model>'], args['<version>']) model_json = requests.get(url).json() metadata = MetaData() make_model(model_json, metadata) render_er(metadata, args['<outfile>'])
import requests from sqlalchemy import MetaData from sqlalchemy.ext.declarative import declarative_base from dmsa.settings import get_url from dmsa.makers import make_model url = get_url('i2b2_pedsnet', 'v2') model_json = requests.get(url).json() metadata = MetaData() make_model(model_json, metadata) Base = declarative_base(metadata=metadata) for table in metadata.tables.values(): cls_name = ''.join(i.capitalize() for i in table.name.split('_')) globals()[cls_name] = table
import requests from sqlalchemy import MetaData from sqlalchemy.ext.declarative import declarative_base from dmsa.settings import get_url from dmsa.makers import make_model url = get_url('pcornet', 'v3') model_json = requests.get(url).json() metadata = MetaData() make_model(model_json, metadata) Base = declarative_base(metadata=metadata) for table in metadata.tables.values(): cls_name = ''.join(i.capitalize() for i in table.name.split('_')) globals()[cls_name] = table
import requests from sqlalchemy import MetaData from sqlalchemy.ext.declarative import declarative_base from dmsa.settings import get_url from dmsa.makers import make_model url = get_url('omop', 'v4') model_json = requests.get(url).json() metadata = MetaData() make_model(model_json, metadata) Base = declarative_base(metadata=metadata) for table in metadata.tables.values(): cls_name = ''.join(i.capitalize() for i in table.name.split('_')) globals()[cls_name] = table
import requests from sqlalchemy import MetaData from sqlalchemy.ext.declarative import declarative_base from dmsa.settings import get_url from dmsa.makers import make_model url = get_url('pedsnet', 'v2') model_json = requests.get(url).json() metadata = MetaData() make_model(model_json, metadata) Base = declarative_base(metadata=metadata) for table in metadata.tables.values(): cls_name = ''.join(i.capitalize() for i in table.name.split('_')) globals()[cls_name] = table
def main(argv=None): usage = """Data Model DDL Generator Generates data definition language for the data model specified in the given DBMS dialect. If passing a custom URL, the data model returned must be in the JSON format defined by the chop-dbhi/data-models package. See http://docs.sqlalchemy.org/en/rel_1_0/dialects/index.html for available dialects. The generated DDL is written to stdout. Usage: ddl.py [options] <model> <version> <dialect> Options: -h --help Show this screen. -t --xtables Exclude tables from the generated DDL. -c --xconstraints Exclude constraints from the generated DDL. -i --xindexes Exclude indexes from the generated DDL. -d --drop Generate DDL to drop, instead of create, objects. -x --delete-data Generate DML to delete data. -u URL --url=URL Retrieve model JSON from this URL instead of the default or environment-variable-passed URL. -r --return Return DDL as python string object instead of printing it to stdout. """ # noqa from docopt import docopt # Ignore command name if called from command line. argv = argv or sys.argv[1:] args = docopt(usage, argv=argv, version=__version__) url = args['--url'] or get_url(args['<model>'], args['<version>']) model_json = requests.get(url).json() metadata = MetaData() make_model(model_json, metadata) engine = create_engine(args['<dialect>'] + '://') output = [] if args['--delete-data']: tables = reversed(metadata.sorted_tables) output.extend(delete_data(tables, engine)) output = ''.join(output) if args['--return']: return output else: sys.stdout.write(output) return if not args['--xtables']: if not args['--drop']: tables = metadata.sorted_tables output.extend(table_ddl(tables, engine, False)) else: tables = reversed(metadata.sorted_tables) output.extend(table_ddl(tables, engine, True)) if not args['--xconstraints']: if not args['--drop']: tables = metadata.sorted_tables output.append('\n') output.extend(constraint_ddl(tables, engine, False)) else: tables = reversed(metadata.sorted_tables) output.insert(0, '\n') output[0:0] = constraint_ddl(tables, engine, True) if not args['--xindexes']: if not args['--drop']: tables = metadata.sorted_tables output.append('\n') output.extend(index_ddl(tables, engine, False)) else: tables = reversed(metadata.sorted_tables) output.insert(0, '\n') output[0:0] = index_ddl(tables, engine, True) output = ''.join(output) if args['--return']: return output else: sys.stdout.write(output)
import requests from sqlalchemy import MetaData from sqlalchemy.ext.declarative import declarative_base from dmsa.settings import get_url from dmsa.makers import make_model url = get_url('omop', 'v5') model_json = requests.get(url).json() metadata = MetaData() make_model(model_json, metadata) Base = declarative_base(metadata=metadata) for table in metadata.tables.values(): cls_name = ''.join(i.capitalize() for i in table.name.split('_')) globals()[cls_name] = table
import requests from sqlalchemy import MetaData from sqlalchemy.ext.declarative import declarative_base from dmsa.settings import get_url from dmsa.makers import make_model url = get_url('pedsnet', 'v1') model_json = requests.get(url).json() metadata = MetaData() make_model(model_json, metadata) Base = declarative_base(metadata=metadata) for table in metadata.tables.values(): cls_name = ''.join(i.capitalize() for i in table.name.split('_')) globals()[cls_name] = table
import requests from sqlalchemy import MetaData from sqlalchemy.ext.declarative import declarative_base from dmsa.settings import get_url from dmsa.makers import make_model url = get_url('i2b2', 'v1.7') model_json = requests.get(url).json() metadata = MetaData() make_model(model_json, metadata) Base = declarative_base(metadata=metadata) for table in metadata.tables.values(): cls_name = ''.join(i.capitalize() for i in table.name.split('_')) globals()[cls_name] = table
import requests from sqlalchemy import MetaData from sqlalchemy.ext.declarative import declarative_base from dmsa.settings import get_url from dmsa.makers import make_model url = get_url('pcornet', 'v2') model_json = requests.get(url).json() metadata = MetaData() make_model(model_json, metadata) Base = declarative_base(metadata=metadata) for table in metadata.tables.values(): cls_name = ''.join(i.capitalize() for i in table.name.split('_')) globals()[cls_name] = table