Pull to refresh

Comments 5

За открытие отдельной сессии на каждый чих нужно бить по рукам, а лучше по голове.

Сессия - это не просто "какая-то штука", которую можно открывать по 5 раз внутри каждой вьюшки.

Во-первых, это Identity Map, который предотвращает повторное создание уже заполненных ранее объектов, ассоциированных с одинаковыми строками в БД.

Во-вторых, это абстракция для транзакции, в пределах которой вы можете делать rollback и commit. Как вы будете нормально работать с транзакциями, если у вас каждый отдельный запрос к БД оборачивается в отдельную транзакцию?

Да видно, что некомпетентный человек написал эту статью.

По рукам, а лучше по голове, следует бить тех, кто выбрасывает наружу ORM-mapped объекты паттерна ActiveRecord, завязанные на сессию, после чего терминирует сессию.

Но начать следует с того, что по рукам, а лучше по голове, следует бить тех, кто использует глобальные и статические объекты. И тех, кто не хранит маппинги класс-таблица у себя во внутренних структурах, а внедряет их прямо в классы. Хотя стоп, подождите - ведь это именно то, что делает SQLAlchemy?!

В общем, SQLAlchemy «не самый удачный» образец ORM, и даже то что она де-факто «один из стандартов» в питонячьей разарботке, не делает ее правильной. А что до ошибок которые сделал автор статьи -  снявши голову (связавшись с алхимией), по волосам не плачут

Сначала выбрали язык с динамической типизацией потому что так проще, а потом пытаются на велосипедах и костылях по подводным граблям добавить строгую типизацию, но только в IDE.

Ни кого не возникает неопредолимого желания написать подобное на C++, на любом стандарте?

Sign up to leave a comment.

Articles