Запись данных в 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()