Запись данных в PostgreSQL

Я записываю csv строки в базу данных PostgreSQL. В случае если данные отсутствуют, то обрабатывается исключение. Проблема заключается в том, что если обрабатывается блок except, то последующие данные не записываются, и выводится код с try и except. Подскажите пожалуйста.

try:
    lines = [line.split(',') for line in lines]
    print(lines)
    query = ",".join(("%s" for _ in range(len(lines[0]))))
    query = f'INSERT INTO get_finance ("TICKER", "PER", "DATE", "TIME", "OPEN", "HIGH", "LOW", "CLOSE", "VOL") VALUES({query}) '
    cursor = connection.cursor()
    cursor.executemany(query, lines)
    connection.commit()
    time.sleep(1)
except:
    print(code + " данные отсутствуют")
    time.sleep(1)

Данные есть и записываются:

[['MSNG', '5', '11/10/21', '10:00:00', '2.3100000', '2.3200000', '2.3030000', '2.3120000', '773000']..

[['AGRO', '5', '11/10/21', '10:00:00', '1236.4000000', '1237.6000000', '1224.4000000', '1232.6000000', '16347']..

Данные отсутствуют(работает блок except):

ALNU данные отсутствуют

После исключения, данные не записываются и выводится код из try и except:

[['AMD-RM', '5', '11/10/21', '10:00:00', '7478.0000000', '7478.0000000', '7478.0000000', '7478.0000000', '2']

AMD-RM данные отсутствуют

Ответы (1 шт):

Автор решения: Илья Величко

Проблема была решена путем переноса connection.commit() за пределы блоков try / except:

try:
    lines = [line.split(',') for line in lines]
    query = ",".join(("%s" for _ in range(len(lines[0]))))
    query = f'INSERT INTO get_finance ("TICKER", "PER", "DATE", "TIME", "OPEN", "HIGH", "LOW", "CLOSE", "VOL") VALUES({query}) '
    cursor = connection.cursor()
    cursor.executemany(query, lines)
    print(lines)
    time.sleep(1)
except:
    print(code+" данные отсутствуют")
    time.sleep(1)
connection.commit()
→ Ссылка