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
En ceODBC, el flujo deexecutemany
es