TGViewer
Zen of Python Zen of Python @zen_of_python · 18.8K subscribers
Post #2577 4.96K
​SQL: вставка новых записей в БД или обновление существующих

Почти сразу при появлении SQL в работе появляется потребность обновлять базу. Однако вручную выслеживать, кто в большом наборе есть, а кого добавлять, — трата времени.

Запрос ниже добавляет новых сотрудников в перечень персонала. Если запись с таким именем уже существует, то эта инъекция обновит ее:

db = # WITH new_employees AS (
SELECT *
FROM (
VALUES ('George', 'Sales', 'Manager', 1000),
('Jane', 'R&D', 'Developer', 1200)
) AS t(name, department, role, salary)
)
INSERT INTO employees (name, department, role, salary)
SELECT name,
department,
role,
salary
FROM new_employees ON CONFLICT (name) DO
UPDATE
SET department = EXCLUDED.department,
role = EXCLUDED.role,
salary = EXCLUDED.salary
RETURNING *;

#SQL
  • 👍 9
  • ❤‍🔥 1
  • 👎 1
  • 🔥 1
More from @zen_of_python
  1. Oct 11, 2026Почему копия контекста не делает словарь отдельным contextvars помогает хранить request ID…
  2. Oct 11, 2026Почему короткие паузы сборщика мусора обходятся памятью В CPython подсчёт ссылок освобожда…
  3. Oct 11, 2026Как проверить, что мок заменил нужную зависимость Если service.py делает from client impor…
  4. Oct 10, 2026Post #5048
  5. Oct 10, 2026Showboat и Rodney помогают показать работу ИИ-агента Саймон Уиллисон собирает демонстрации…
  6. Oct 10, 2026Почему max_workers не ограничивает очередь задач ThreadPoolExecutor(max_workers=8) разреша…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →