❤10👍7👎3
В этой статье:
• Асинхронное подключение к PostgreSQL через SQLAlchemy ORM
• Миграции базы данных с Alembic и примеры отката
• Docker-compose для быстрого запуска сервисов
🔊 Подробное руководство лежит на Habr!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9❤5🔥5
Это мощный приём для работы с вложенными структурами. Он позволяет обходить таблицы с
parent_id
, формируя данные уровень за уровнем прямо в одном запросе.Что важно знать:
• Поле-счётчик (например, level) помогает визуализировать глубину и управлять ею.
• Условие WHERE level <= N ограничивает количество уровней, чтобы отчёты не разрастались.
• Всё выполняется в чистом SQL.
🔥 — если узнал что-то новое
🤝 — если уже делал подобное
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥21❤6👍4🤝2
JSON — это гибкий формат, который отлично подходит для хранения вложенных структур прямо в базе данных. Современные СУБД поддерживают разнообразные функции для работы с JSON: можно извлекать отдельные значения, фильтровать по ним, разворачивать массивы и объекты.
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥24👍7❤5
SELECT FOR UPDATE SKIP LOCKED — распределяем задачи без гонок!
Иногда нужно, чтобы несколько воркеров одновременно обрабатывали очередь задач, не мешая друг другу. Чтобы избежать гонок и блокировок, используется
Представим, что у нас есть таблица задач:
Если несколько процессов попытаются взять одну и ту же задачу — возможна гонка или блокировка.
Используем безопасный способ:
🔥 Каждый воркер получает только одну *свободную* задачу. Если задача уже заблокирована другим процессом — она просто пропускается.
➡️ SQL Ready | #практика
Иногда нужно, чтобы несколько воркеров одновременно обрабатывали очередь задач, не мешая друг другу. Чтобы избежать гонок и блокировок, используется
SELECT … FOR UPDATE SKIP LOCKED
.Представим, что у нас есть таблица задач:
SELECT id, status
FROM tasks
WHERE status = 'pending';
Если несколько процессов попытаются взять одну и ту же задачу — возможна гонка или блокировка.
Используем безопасный способ:
BEGIN;
SELECT id
FROM tasks
WHERE status = 'pending'
FOR UPDATE SKIP LOCKED
LIMIT 1;
-- UPDATE tasks SET status = 'processing' WHERE id = …
COMMIT;
🔥 Каждый воркер получает только одну *свободную* задачу. Если задача уже заблокирована другим процессом — она просто пропускается.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤10👍7🔥5
Например,
код 200
означает, что всё прошло успешно, а 404
сообщает, что страница не найдена.Очень полезно держать под рукой, когда работаешь с API или отлаживаешь backend.
На картинке показаны самые часто используемые статусы от 100 до 599.
Сохрани, чтобы не забыть!
Please open Telegram to view this post
VIEW IN TELEGRAM
👍13❤9🔥5
Создаем таблицу для централизованного хранения метаданных изображений с помощью JSONB. Операции JSONB занимают значительно меньше времени, чем операции с JSON, полезно знать, что это такое.
В этом гайде:
• Создаем таблицу метаданных — разрабатываем структуру и связываем с таблицей изображений.
• INSERT JSONB-метаданных — продумываем вставку метаданных при загрузке изображений.
• SELECT JSONB-метаданных — рассматриваем методы выборки и фильтрации JSONB-элементов.
🔥 — если узнал что-то новое
🤝 — если уже пользовался
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13❤7👍4🤝1
This media is not supported in your browser
VIEW IN TELEGRAM
Простой, понятный и без лишнего шума — сайт предлагает мини-уроки с живыми примерами, которые можно сразу же опробовать в онлайн-редакторе. Никаких установок и лишних шагов — всё обучение происходит в браузере.
Please open Telegram to view this post
VIEW IN TELEGRAM
❤8👍6🔥5