172 похожих чатов

Имеется две таблицы, в одной поле X - UNIQUE (ON

CONFLICT(X) DO NOTHING), делаю вставку данных в эти таблицы через executemany,
подскажите как сделать так что бы если таблица уже содержит это уникальное поле, то вставка во вторую таблицу не происходила? это вообще реально через множественную вставку или нужно по одномой строке вставлять и если ошибка - отменять транзакцию? Спасибо

9 ответов

25 просмотров
Oleg-Katushka Автор вопроса

метод asyncpg либы для postgres в питоне. Думал получать через RETURNING айдишники и вставлять во вторую таблицу если пришел не NULL то есть если insert был, но asyncpg не поддерживает RETURNING для множественной вставки

Oleg Katushka
метод asyncpg либы для postgres в питоне. Думал по...

А в чём проблема вызвать множественную вставку с помощью fetch? Тогда ж всё ок будет

Oleg-Katushka Автор вопроса
Dmitriy Sviridov
А в чём проблема вызвать множественную вставку с п...

тогда если делать ON CONFLICT DO NOTHING RETURNING id, я не смогу получить айдишки новых вставленных строк, а без этого я не знаю нужно ли вставлять связанные данные в другую табличку, а если оставить ON CONFLICT NO ACTION то все запросы упадут

Oleg Katushka
метод asyncpg либы для postgres в питоне. Думал по...

Да всё можно, можно INSERT ... RETURNING обернуть в cte и результат использовать в другом INSERT, например. (Ещё можно дописать asnycpg, там кода-то немного). Ещё можно вообще весь dataset на сервер отправить, и пусть там запросы разбираются -- что куда перекладывать. Только вопрос -- а оно вам надо? У вас вообще хоть какой-то кусок этой обработки является проблемным по скорости?

Oleg-Katushka Автор вопроса
Ilya Anfimov
Да всё можно, можно INSERT ... RETURNING обернуть ...

ну новых строк может быть +- 800 в сек, если вставлять по строке то не хватает пула из 5 конекшенов, то я по +- 50 срок вставляю сразу

Oleg-Katushka Автор вопроса

бд и воккер на разных серверах, поэтому 0.05 сек еще просто уходит на доставку

Oleg Katushka
да

Тогда вариант "Ещё можно вообще весь dataset на сервер отправить, и пусть там запросы разбираются -- что куда перекладывать." становится более привлекательным. (Если всё сложно с SQL (хотя это работа как раз для него) -- пишыте на питоне на сервере).

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта