from sqlalchemy import create_engine, MetaData
from sqlalchemy.orm import sessionmaker

# Crea una conexión a la base de datos SQLite3
sqlite_engine = create_engine('sqlite:./sqlite3')

# Crea una conexión a la base de datos MySQL
mysql_engine = create_engine('mysql+pymysql://sirsedb:sirsedb>@<direccion_ip_del_servidor_mysql>/<nombre_de_la_base_de_datos>')

# Crea una sesión en la base de datos SQLite3
Session = sessionmaker(bind=sqlite_engine)
session = Session()

# Crea una sesión en la base de datos MySQL
mysql_session = sessionmaker(bind=mysql_engine)()

# Crea una instancia de Metadata para la base de datos SQLite3
metadata = MetaData(bind=sqlite_engine)

# Carga la estructura de la base de datos SQLite3
metadata.reflect()

# Crea las tablas en la base de datos MySQL
metadata.create_all(mysql_engine)

# Copia los datos de la base de datos SQLite3 a la base de datos MySQL
for table in metadata.sorted_tables:
    for row in session.query(table).all():
        mysql_session.execute(table.insert().values(**row._asdict()))
    mysql_session.commit()

# Cierra las conexiones a ambas bases de datos
session.close()
mysql_session.close()