pyodbc: velocidad de inserción masiva muy lenta

Con esta tabla:

CREATE TABLE test_insert (
    col1 INT,
    col2 VARCHAR(10),
    col3 DATE
)

el siguiente código tarda 40 segundos en ejecutarse:

import pyodbc

from datetime import date


conn = pyodbc.connect('DRIVER={SQL Server Native Client 10.0};'
    'SERVER=localhost;DATABASE=test;UID=xxx;PWD=yyy')

rows = []
row = [1, 'abc', date.today()]
for i in range(10000):
    rows.append(row)

cursor = conn.cursor()
cursor.executemany('INSERT INTO test_insert VALUES (?, ?, ?)', rows)

conn.commit()

El código equivalente con psycopg2 solo toma 3 segundos. No creo que mssql sea mucho más lento que postgresql. ¿Alguna idea sobre cómo mejorar la velocidad de inserción masiva cuando se usa pyodbc?

EDIT: agregue algunas notas después del descubrimiento de ghoerz

In pyodbc, el flujo deexecutemany es

prepare declaraciónloop para cada conjunto de parámetros enlazar el conjunto de parámetrosejecuta

En ceODBC, el flujo deexecutemany es

prepare declaraciónbind todos los parámetrosejecuta

Respuestas a la pregunta(6)

Su respuesta a la pregunta