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()