Найти тему
Computer Pro

SQLAlchemy: Создание таблиц через КЛАССЫ - Mapped и mapped_column #3

Продолжаю, параллельно с курсом склиллбокс python_advanced, отрабатывать цикл ютуб-лекций по SQLAlchemy, дабы лучше понять данную ORM. Ну и немного модернизируя код под свои представления о программировании. Потому как некоторые строки, в коде данных лекций, не соответствуют PEP-8. К тому же эта лекция у меня пошла гладко и пришлось как-то адаптироваться.

С чего началось изучение SQLAlchemy:

Итак, пришло время освоить создание таблиц через классы. Самое печальное - сделал всё как показывает и рассказывает Артём Шумейко, но в итоге у меня таблицы и не удаляются и не создаются...

Вот казалось бы, код:

-2

Из кода моделей убрал всё лишнее, оставил только один класс, для создания таблицы "workers", и всё равно - на выходе пусто!

Намеренно заблюрил всё лишнее чтобы не бросалось в глаза
Намеренно заблюрил всё лишнее чтобы не бросалось в глаза
-4
-5

Собственно вызывается только одна функция - создание таблиц, но почему-то ничего не происходит, читал комментарии под видео, даже искал в телеграм-канале решение этой проблемы (не у меня одного такая фигня происходила).

Так я и не понял почему всё это дело не работает, однозначно - "где-то собака порылась"
Так я и не понял почему всё это дело не работает, однозначно - "где-то собака порылась"
-7

Решил пойти тем путём, о котором постоянно говорят в телеграмм-канале скиллбокс - читай документацию!!! Открыл документашку SQLAlchemy где описан быстрый запуск и объявление моделей, в одном файле, "на коленке", создал нечто похожее (но и в то же время частично из кода выше импортировал - настройки БД) по документации, запустил - работает!!!

-8
-9

В одном файле всё идет исключительно по-порядку (линейно) а когда код разбросан на несколько файлов то могут быть нюансы... Где-то, как-то нарушен порядок вызова строчек кода... Нужно искать...

Нашел я ошибку, почему-то дважды запускался код с созданием движков, сессий и базового класса. Решил перенести создание базового класса в файл models.py, пожалуй, так будет более правильно (да и в документации так же примерно написано).

После чего уже начинает что-то вызываться, твориться какие-то запросы, но всё равно ошибка при формировании одного поля:

-10

Внимательный читатель может заметить - мол, постойте, а откуда взялась таблица resumes??? Она взялась из второго класса, который до этого был закомментирован:

на всякий случай прокомментировал класс WorkLoad
на всякий случай прокомментировал класс WorkLoad

Ошибка в том, что программа не знает - какое время подставить...

Забыл подставить 'utc' перед вызовом функции now() в server_default
Забыл подставить 'utc' перед вызовом функции now() в server_default

Исправил и всё заработало...

-13

И вот как это дело выглядит в приложении DBEaver (управление различными базами данных):

-14

Ну вот как-то так. На этом я прощаюсь до следующей статьи по этой теме...

-15