К содержимому
~/wertyqqs
Все навыки
Навык 02 / 06

SQL и базы данных

Проектирование схем, запросы, работа с PostgreSQL и SQLite.

Уровень
Уверенный
Опыт
2 года
Проекты
2 в портфолио

Подход

Проектирую схемы под задачу и пишу запросы. В ботах использую PostgreSQL через SQLAlchemy 2 (async) и миграции Alembic, в небольших проектах — SQLite.

Делаю ежедневные бэкапы и переносы данных — например, перенёс «Пинок» с SQLite на PostgreSQL без потери данных.

Что входит

  • Проектирование схем
  • Запросы и выборки
  • Миграции
  • Бэкапы и перенос данных

Стек и инструменты

СУБДPostgreSQL
СУБДSQLite
ORMSQLAlchemy 2
МиграцииAlembic

Пример кода

1async def touch_user(session: AsyncSession, tg: TgUser) -> None:
2 stmt = insert(User).values(id=tg.id, username=tg.username, full_name=tg.full_name)
3 stmt = stmt.on_conflict_do_update(
4 index_elements=[User.id],
5 set_={"username": tg.username, "full_name": tg.full_name, "last_seen_at": func.now()},
6 )
7 await session.execute(stmt)
8
9
10async def add_section(session: AsyncSession, title: str, body: str) -> Section:
11 max_pos = await session.scalar(select(func.coalesce(func.max(Section.position), 0)))
12 section = Section(
13 slug=f"s{int(datetime.now().timestamp())}", title=title, body=body, position=max_pos + 1
14 )
15 session.add(section)
16 await session.flush()
17 return section
Из бота-визитки: upsert пользователя — INSERT … ON CONFLICT DO UPDATE за один запрос.

В проектах

Где я это применял

t.me

Учёт заказов

Telegram-бот · 2026

Telegram-бот — Автор

Telegram-бот для учёта заказов и дохода: заказчик, время, сумма — всё в одной таблице, которую можно открыть в любой момент.

  • Добавление заказа в три шага — всё кнопками, без команд
  • Выгрузка всей таблицы в Excel со строкой «ИТОГО»
  • Статистика дохода: за сегодня, за месяц и за всё время
  • Python
  • aiogram 3
  • SQLite
  • openpyxl
  • systemd
t.me

Пинок

Telegram-бот · 2026

Telegram-бот + Mini App — Автор

Telegram-бот и мини-приложение против прокрастинации для школьников и студентов: помогает не сливаться и всё-таки делать задуманное.

  • Задачи обычным текстом — «завтра в 10 созвон»: бот сам понимает дату и напоминает
  • AI-разбивка целей на шаги по 10–20 минут
  • Мини-приложение: план дня, таймер фокуса, статистика, стрики и уровни

Бэкапы, миграции, мониторинг и деплой одной командой

  • Python
  • aiogram 3
  • aiohttp
  • PostgreSQL
  • SQLAlchemy
  • Alembic
  • Telegram Mini App (JS)
  • Gemini API
  • Caddy
  • systemd

Нужен SQL и базы данных для вашей задачи? Давайте обсудим.

Обсудить проект