import sqlalchemy.dialects.mssql.base from sqlalchemy import create_engine, MetaData, Boolean, DATETIME from database import conn_string source_dsn = {'user': 'sa', 'pass': 'Mffu3011#', 'server': 'GC-SERVER1\\GLOBALCUBE', 'database': 'OPTIMA', 'driver': 'mssql'} source_schema = 'import' target_dsn = {'user': 'root', 'pass': '', 'server': 'localhost', 'database': 'OPTIMA', 'driver': 'mysql'} target_schema = '' source_db = create_engine(conn_string(source_dsn)) source_meta = MetaData() source_meta.reflect(bind=source_db, schema=source_schema) # print('\n'.join(source_meta.tables.keys())) target_db = create_engine(conn_string(target_dsn)) source_meta.bind = target_db for table in source_meta.sorted_tables: table.schema = None for col in table.c: if getattr(col.type, 'collation', None) is not None: col.type.collation = None if type(col.type) is sqlalchemy.dialects.mssql.base.BIT: col.type = Boolean() if type(col.type) is DATETIME: # print(table.name + '.' + col.name) col.server_default = None if type(col.type) is sqlalchemy.dialects.mssql.base.SMALLDATETIME: col.type = DATETIME() source_meta.create_all()