«psycopg.OperationalError: не удалось отправить запрос и параметры: другая команда уже выполняется» при попытке обновитьPython

Программы на Python
Anonymous
«psycopg.OperationalError: не удалось отправить запрос и параметры: другая команда уже выполняется» при попытке обновить

Сообщение Anonymous »


Я пытаюсь эффективно обновить строку в таблице postgresql. Для этого я использую временную таблицу и пытаюсь использовать COPY. Мой код выглядит так:

conn = psycopg.connect( хост="localhost", имя_базы=DB_NAME, пользователь=DB_USER, пароль=DB_PASSWORD ) с conn.cursor(name="wordfreq_cursor") как cur, conn.cursor() как ins_cur: ins_cur.execute("CREATE TEMP TABLE temp_ Frequency (id INTEGER NOT NULL, частота FLOAT4) ПРИ COMMIT DROP") cur.itersize = 20_000 cur.execute("SELECT id, lang_code, word FROM etymology LIMIT 3000") # Ограничение предназначено только для отладки я = 1 pbar = tqdm(всего=20_000_000) с ins_cur.copy("COPY temp_ Frequency (id, Frequency) FROM STDIN") в качестве копии: для строки в Cur: идентификатор, lang_code, слово = строка if lang_code в langs: # langs — это набор строк частота = zipf_ Frequency (слово, языковой код) copy.write_row((id, частота)) pbar.обновление(1) ins_cur.execute("ОБНОВЛЕНИЕ этимологии e SET e. Frequency = t. Frequency FROM temp_ Frequency t WHERE e.id = t.id") я += 1 конн.коммит() Однако я получаю psycopg.OperationalError: не удалось отправить запрос и параметры: другая команда уже выполняется. При поиске этой ошибки в Google я получаю только ошибки, связанные с параллелизмом, но в моем случае я не использую многопоточность.

Как исправить эту ошибку?

Я использую Windows 10, Python 3.12, psycopg 3.1.18. Полная трассировка стека выглядит следующим образом:
aceback (последний вызов — последний): Файл «c:\Users\hanne\Documents\Programme\ultimate-dictionary-api\ebook_dictionary_creator\ebook_dictionary_creator\add_wordfreq_to_db.py», строка 75, в temp_table_solution() Файл «c:\Users\hanne\Documents\Programme\ultimate-dictionary-api\ebook_dictionary_creator\ebook_dictionary_creator\add_wordfreq_to_db.py», строка 70, в temp_table_solution ins_cur.execute("ОБНОВЛЕНИЕ этимологии e SET e. Frequency = t. Frequency FROM temp_ Frequency t WHERE e.id = t.id") Файл «C:\Users\hanne\Documents\Programme\ultimate-dictionary-api\ebook_dictionary_creator\.venv\Lib\site-packages\psycopg\cursor.py», строка 732, в процессе выполнения поднять ex.with_traceback (нет) psycopg.OperationalError: не удалось отправить запрос: другая команда уже выполняется. 0%| | 3000/20000000 [00:04 & C:/Users/hanne/Documents/Programme/ultimate-dictionary-api/ebook_dictionary_creator/.venv/Scripts/python.exe c:/Users /hanne/Documents/Programme/ultimate-dictionary-api/ebook_dictionary_creator/ebook_dictionary_creator/add_wordfreq_to_db.py 0%| | 0/20000000 [00:00

Вернуться в «Python»