Tortoise ORM от новичка к профи. Запросы, оптимизация, аналитика, метаданные, часовые пояса и другое

Описание к видео Tortoise ORM от новичка к профи. Запросы, оптимизация, аналитика, метаданные, часовые пояса и другое

Друзья, всем привет! В этом долгом видео я расскажу о всей нужной теории для работы с Tortoise ORM. Это асинхронная библиотека для удобного взаимодействия с базой данных путём использования классов и методов, а не написанием сырых SQL запросов ☺️

🥳 Мой Discord сервер!
  / discord  

⚠️ Другие ссылки находятся в комментариях!

🕒 Содержание:
🚀 Настройка и запуск
00:00 Вступление
01:19 Что такое ORM?
02:19 Что такое Tortoise ORM?
03:00 Установка библиотеки
04:00 Настраиваем проект
04:29 db_url (SQLite)
05:22 modules
06:45 Важные замечания
07:23 Запуск в асинхронном режиме 1
07:45 Определяем первую модель
09:20 Добавляем запись в базу
09:34 .create()
10:24 Запуск в асинхронном режиме 2
12:47 Представление модели. str()
13:29 .save()
13:58 Расширение SQLite viewer

ℹ️ Поля моделей
14:36 SmallIntField
14:50 IntField + BigIntField
15:05 IntEnumField
16:08 FloatField
16:19 DecimalField
17:06 BooleanField + CharField
17:40 TextField
18:10 CharEnumField
19:09 TimeField
19:45 TimeDeltaField
20:27 DateField + DateTimeField
21:01 BinaryField
21:12 JSONField
21:42 UUIDField
22:11 Другие поля у СУБД

⚡Ограничения полей
22:45 Ограничения полей
23:01 null
23:16 unique
23:56 primary_key (pk)
24:30 default
25:10 generated
25:56 validators
26:55 db_index
27:29 source_field + description

👀Запрашивание данных из базы
27:45 Query API. Введение
28:12 .get()
28:45 Совместные условия
29:00 Обратные условия. Q выражения
29:39 OR условия
30:08 .get_or_none()
30:19 .get_or_create()
30:37 .filter()
31:04 .exclude()
31:23 .all()
31:34 QuerySet/QuerySetSingle
31:56 .first()
32:30 .exists()
33:00 .in_bulk()
33:28 .order_by()
34:00 .values()
34:40 .values_list()
35:29 .distinct()

⚒️Модификаторы запросов
36:47 Модификаторы. Введение
37:13 __not
37:41 __in + __not_in
38:04 Операторы сравнения
38:38 __range
39:01 __isnull + __not_isnull
39:26 __contains + __icontains
39:53 __startswith + __istartswith
40:11 __endswith + __iendswith
40:22 __iexact
40:38 __search
41:11 Экстракторы у дат

🔑Связь моделей между собой
41:53 Виды связи моделей. Введение
42:23 Внешние ключи
42:50 ForeignKeyField (Связь one-to-many)
44:03 Виртуальные vs. Физические поля
44:38 related_name
45:45 Пример связи моделей в коде
47:41 Взгляд в базу
47:56 Аннотирование related_name полей
49:28 Связь one-to-one
50:04 Зачем нужна one-to-one связь?
51:49 OneToOneField
52:47 Связь many-to-many (ManyToManyField)
53:25 Методы ManyToManyField
54:00 on_delete

🪢Отбор моделей по значениям связанных моделей
55:44 Фильтр по связанным моделям
56:50 Дублирование записей при отборе
58:15 Глубокий переход

🆕Обновление/удаление моделей
59:05 Обновление через .save()
59:37 .update()
1:00:06 Использование данных из полей
1:01:07 .delete()

🔒Транзакции
1:01:34 Транзакции. Введение
1:02:12 in_transaction()
1:03:20 Тестирование кода
1:04:12 @atomic()
1:05:04 select_for_update(). Блокирование строк
1:06:11 nowait
1:06:25 skip_locked

🚅Оптимизация
1:06:46 Оптимизация. Введение
1:07:03 Индексация
1:07:56 Поиск по шаблонам. LIKE
1:10:07 Сужение выборки запроса полей
1:10:37 .only()
1:11:07 Сужение выборки обновления полей
1:11:58 Виртуальные vs. Физические поля
1:13:11 Проблема N+1 (Префетчинг)
1:14:00 prefetch_related()
1:15:31 Фильтр prefetch моделей
1:16:20 Несколько префетчей одновременно
1:16:37 Разбиваем один и тот же префетч
1:17:35 Глубокий префетч
1:18:16 .fetch_related()
1:18:39 .fetch_for_list()
1:19:23 Кэширование
1:20:02 Итоги оптимизации

🔌Подключение к PostgreSQL
1:20:19 Подключение другой базы
1:21:20 Установка PostgreSQL
1:21:53 db_url (PostgreSQL)
1:23:30 Тест подключения
1:23:45 Просмотр данных в pgAdmin

⏱️Часовые пояса
1:24:39 Часовые пояса. Введение
1:25:09 Дата и время в Python
1:26:02 ZoneInfo()
1:26:31 Задание часового пояса
1:26:55 Перевод в другой часовой пояс
1:27:18 Летнее время у часовых поясов
1:28:22 Часовой пояс сервера (Tortoise)
1:29:10 localtime()
1:29:50 now()

➕ Мета данные моделей
1:30:31 Мета. Введение. table
1:30:56 table_description
1:31:07 ordering
1:31:36 unique_together
1:32:19 abstract
1:33:17 indexes
1:33:29 Стандартные индексы
1:33:53 Сложный индекс
1:34:08 Переименовываем индексы
1:34:28 Изменяем тип индексов

📶 Сигналы моделей
1:35:11 Сигналы. Введение
1:35:38 @pre_save
1:36:38 Общие сигналы полей
1:36:58 @post_save
1:37:16 @pre_delete + @post_delete
1:37:35 Ручное присваивание сигналов
1:37:58 Типизация аргументов сигналов

📈 Аналитика/Статистика из базы
1:38:39 Статистика. Введение
1:39:15 .annotate() 1
1:39:53 Функции в СУБД
1:40:21 .annotate() 2
1:41:50 Группировка записей
1:42:03 .group_by()
1:43:12 Аргументы агрегатных функций
1:43:49 Передача функции как аргумента
1:44:24 F (field) выражения
1:45:10 Важная информация + заключение

❤️ Буду очень благодарен вашему лайку! Он поможет ютубу продвинуть это видео на большую аудиторию, чтобы больше людей смогли научиться чему-то новому =)

#python #tortoise #orm #fastapi #discord #fastapi #web #server #database #guide

Комментарии

Информация по комментариям в разработке