pyodbc - velocidade de inserção em massa muito lenta
Com esta tabela:
CREATE TABLE test_insert (
col1 INT,
col2 VARCHAR(10),
col3 DATE
)
o código a seguir leva 40 segundos para ser executado:
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()
O código equivalente ao psycopg2 leva apenas 3 segundos. Eu não acho que o mssql seja muito mais lento que o postgresql. Alguma idéia de como melhorar a velocidade da inserção em massa ao usar pyodbc?
EDIT: Adicione algumas notas após a descoberta de ghoerz
No pyodbc, o fluxo deexecutemany
é
No ceODBC, o fluxo deexecutemany
é