def createsql(app, out): metadata = Base.metadata db = database.get_database(app) metadata.bind = db tables = metadata.sorted_tables for table in tables: sql = CreateTable(table).compile(db.engine).string sql = sql.strip() + ';\n' indexes = table.indexes for index in sorted(indexes, key=lambda i: i.name): sql += CreateIndex(index).compile(db.engine).string + ';\n' sql += '\n' out.write(sql)
def create_sql(tables=None, out=sys.stdout): u''' :param tables [str]: :param out: file obj ''' metadata = BaseModel.metadata metadata.bind = db.session(BaseModel.default_session_name).get_bind() all_tables = metadata.sorted_tables if not tables: target_tables = all_tables else: target_tables = [t for t in all_tables if t.name in tables] if len(tables) != len(target_tables): raise ValueError('invalid tables. {}'.format(tables)) for table in sorted(target_tables, key=lambda t: t.name): sql = CreateTable(table).compile(db.engine).string sql = sql.strip() + ';\n' indexes = table.indexes for index in sorted(indexes, key=lambda i: i.name): sql += CreateIndex(index).compile(db.engine).string + ';\n' sql += '\n' out.write(sql)