Escribir grandes marcos de datos de pandas en la base de datos de SQL Server

Tengo 74 marcos de datos Pandas relativamente grandes (alrededor de 34,600 filas y 8 columnas) que estoy tratando de insertar en una base de datos de SQL Server lo más rápido posible. Después de investigar un poco, aprendí que la buena olepandas.to_sql la función no es buena para inserciones tan grandes en una base de datos de SQL Server, que fue el enfoque inicial que tomé (muy lento, casi una hora para que la aplicación se complete en comparación con aproximadamente 4 minutos cuando se usa la base de datos mysql).

Este artículo, y muchas otras publicaciones de StackOverflow han sido útiles para señalarme en la dirección correcta, sin embargo, he encontrado un obstáculo:

Estoy tratando de usar SQLAlchemy's Core en lugar del ORM por las razones explicadas en el enlace anterior. Entonces, estoy convirtiendo el marco de datos en un diccionario, usandopandas.to_dict y luego haciendo unexecute() yinsert():

self._session_factory.engine.execute(
    TimeSeriesResultValues.__table__.insert(),
    data)
# 'data' is a list of dictionaries.

El problema es que la inserción no obtiene ningún valor: aparecen como un paréntesis vacío y obtengo este error:

(pyodbc.IntegretyError) ('23000', "[23000] [FreeTDS][SQL Server]Cannot
insert the value NULL into the column...

Hay valores en la lista de diccionarios que pasé, así que no puedo entender por qué los valores no se muestran.

EDITAR:

Aquí está el ejemplo del que salgo:

def test_sqlalchemy_core(n=100000):
    init_sqlalchemy()
    t0 = time.time()
    engine.execute(
        Customer.__table__.insert(),
        [{"name": 'NAME ' + str(i)} for i in range(n)]
    )
    print("SQLAlchemy Core: Total time for " + str(n) +
        " records " + str(time.time() - t0) + " secs")

Respuestas a la pregunta(1)

Su respuesta a la pregunta