К содержанию
Первый Коммит

Модуль 8 после покупки курса

Состояние и база данных — SQLite под управлением модели

  • Почему память не годится
  • SQLite и модуль sqlite3
  • Схема при первом запуске
  • CRUD-инструменты
  • SQL-инъекция от модели
  • Мягкое удаление
  • Одновременный доступ

Все инструменты, написанные до сих пор, теряли данные сразу. Сервер столовой из модуля 2 записывал бронь в словарь, кэш координат из модуля 6 хранился в переменной, и стоило серверу остановиться, как всё это исчезало без следа. Для расчётов и справок этого достаточно. Для заявок, заказов и записей — нет: их придётся хранить по-настоящему.

В этом модуле у сервера появляется база данных. Она решает главную проблему — данные переживают перезапуск и видны всем клиентам сразу, — но приносит с собой три новые. Данные теперь можно испортить, причём необратимо. К ним обращаются несколько клиентов одновременно, и это нужно учитывать. И самое неприятное: запросы к базе теперь собирает не человек за клавиатурой, а модель, которой кто-то диктует текст. Аргумент инструмента, попавший в SQL-запрос неаккуратно, стирает таблицу целиком — и мы покажем это на живом опыте, а не на словах.

Базу берём самую простую из возможных — SQLite. Это один файл на диске и модуль sqlite3, встроенный в Python: ничего устанавливать не нужно, отдельный сервер запускать не нужно, и весь модуль использует то же окружение, что и предыдущие.

Три темы в модуле сознательно не рассматриваются. Проверку аргументов средствами Pydantic и правила хороших сообщений об ошибках разобрал модуль 7, и здесь они применяются в готовом виде. Секреты, права доступа, лимиты и журналирование как отдельную тему безопасности разбирает модуль 9. Инъекцию через данные, когда вредная инструкция попадает к модели в тексте документа, — тоже модуль 9. Здесь рассматривается одно: как устроен MCP-сервер, у которого есть состояние, и как не дать модели его разрушить.

Платная часть курса

Остальные модули открывает покупка курса

Первые 2 модуля курса «MCP-серверы» открыты всем. Остальные 8 модулей, включая этот, открываются после покупки курса. Доступ остаётся навсегда вместе со всеми обновлениями курса.

Уже купили этот курс? Войдите, и он откроется.

В этом модуле 11 разделов

  1. 8.1 Почему память рано или поздно подводит
  2. 8.2 SQLite: база, которой не нужен сервер
  3. 8.3 Соединение, курсор, транзакция
  4. 8.4 Схема, которая создаётся сама
  5. 8.5 Набор CRUD-инструментов
  6. 8.6 SQL-инъекция, когда запрос собирает модель
  7. 8.7 Необратимые операции: удаление, которое можно отменить
  8. 8.8 Когда пишут одновременно
  9. 8.9 Практика: сервер мастерской по ремонту техники
  10. Итоги модуля 8
  11. Домашнее задание

Введите запрос: название модуля, тема или раздел.

Стрелки — выбор, Enter — открыть. Ищет по названиям модулей, темам и разделам.