Пакетный коммит для psycopg2 в python - PullRequest
0 голосов
/ 13 мая 2019

Я новичок в питоне. У меня есть сценарий использования, в котором мне нужно проанализировать файл CSV, а затем вставить строки в БД.

Вот мой код

with open(targetFileName, 'r') as csvfile:
        # creating a csv reader object 
        csvreader = csv.reader(csvfile) 
        for row in csvreader:
            print(row)
            with conn.cursor() as cur:
                cur.execute("insert into test (first, second) values(%s,%s)",row)
                conn.commit()

Здесь я выполняю и фиксирую запрос строка за строкой. Я хочу сделать пакетную фиксацию, а не фиксировать каждую строку. Есть ли способ сделать это?

1 Ответ

0 голосов
/ 14 мая 2019

Не проверял, но не можете ли вы поместить цикл for во 2-й оператор with с фиксацией после цикла for?

with open(targetFileName, 'r') as csvfile:
    # creating a csv reader object 
    csvreader = csv.reader(csvfile)
    with conn.cursor() as cur:
        for row in csvreader:
            print(row)
            cur.execute("insert into test (first, second) values(%s,%s)",row)
        conn.commit()

Вы также можете использовать команду execute_batch в Psycopg2:

http://initd.org/psycopg/docs/extras.html#fast-execution-helpers

...