Inserto masivo SQLAlchemy Core lento

Estoy tratando de truncar una tabla e insertar solo ~ 3000 filas de datos usando SQLAlchemy, y es muy lento (~ 10 minutos).

Seguí las recomendaciones de este documento y aproveché el núcleo sqlalchemy para hacer mis inserciones, pero aún así funciona muy lento. ¿Cuáles son los posibles culpables para mí? La base de datos es una instancia RDS postgres. ¡Gracias!

engine = sa.create_engine(db_string, **kwargs, pool_recycle=3600) with engine.begin() as conn: conn.execute("TRUNCATE my_table") conn.execute( MyTable.__table__.insert(), data #where data is a list of dicts ) 

Me quedé desconcertado cuando vi que esto no tenía una respuesta … Me encontré con el mismo problema el otro día: tratando de insertar de forma masiva millones de filas en una instancia de RDS de Postgres usando CORE. Estaba tomando horas .

Como solución temporal, terminé escribiendo mi propio script de inserción masiva que generó el propio sql sin formato:

 bulk_insert_str = [] for entry in entry_list: val_str = "('{}', '{}', ...)".format(entry["column1"], entry["column2"], ...) bulk_insert_str.append(val_str) engine.execute( """ INSERT INTO my_table (column1, column2 ...) VALUES {} """.format(",".join(bulk_insert_str)) ) 

Aunque feo, esto me dio el rendimiento que necesitábamos (~ 500,000 filas / minuto)

¿Encontraste una solución basada en CORE? Si no, espero que esto ayude!

ACTUALIZACIÓN: Terminé de mover mi script anterior a una instancia de EC2 de repuesto que no estábamos usando, lo que solucionó el problema de rendimiento lento. No estoy seguro de cuál es su configuración, pero aparentemente hay una sobrecarga en la red al comunicarse con RDS desde una conexión externa (sin AWS).