С ceODBC это заняло 4 секунды.

й таблицей:

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

запуск следующего кода занимает 40 секунд:

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()

Эквивалентный код с psycopg2 занимает всего 3 секунды. Я не думаю, что mssql намного медленнее, чем postgresql. Есть идеи, как улучшить скорость массовой вставки при использовании pyodbc?

РЕДАКТИРОВАТЬ: добавить некоторые заметки после открытия Ghoerz

В pyodbc потокexecutemany является:

подготовить заявлениецикл для каждого набора параметровсвязать набор параметроввыполнять

В ceODBC потокexecutemany является:

подготовить заявлениепривязать все параметрывыполнять

Ответы на вопрос(6)

Ваш ответ на вопрос