Найти - Пользователи
Полная версия: Что умеет SqlAlchemy?
Начало » Базы данных » Что умеет SqlAlchemy?
1
Naota
Давно пишут на этом замечательном ORM. Но чем дольше пишу и чем сложнее проект, тем чаще меня берут сомнения в его необходимости, потому что запросы на нем строить получается сложнее чем писать их на SQL. Наверное там есть куча возможностей, которые я не использую. А как вам помогает этот ORM ?
j2a
Я ORM мало использую, зато SA-expression-language много. Конструирование запросов “по частям”, добавление условий, поддержка схемы.
Naota
Ну да, ORM в таком виде где описываются зависимости в модели я то же не использую. Expression-language конечно чуток укорачивает запросы и позволяет их составлять удобно по условиям, но сложные запросы составлять не очень прикольно в нем.
Naota
К примеру вот такой запрос:
SELECT items.id,
group_concat(stones.name separator ', '),
(SELECT SUM(payments.count) FROM payments WHERE payments.item_statement_id = items_statements.id)
FROM items
INNER JOIN items_statements ON items.id = items_statements.item_id
LEFT OUTER JOIN stones_items ON items.id = stones_items.item_id
LEFT OUTER JOIN stones ON stones.id = stones_items.stone_id
WHERE items_statements.statement_id = %s
GROUP BY items.id
До сих пор не могу его описать в алхимии.
Андрей Светлов
Есть у меня такое наблюдение:
- если пишем stateless Web server - нужны простые запросы. Во многих случаях лучше нереляционка вообще, но это уже выходит за обсуждаемые рамки
- зато если толстый клиент - очень часто нужны именно объекты с довольно долгим временем жизни. И ORM оказывается очень в тему. Статистические репорты все еще часто лучше делать простыми запросами
balu
Naota
Но чем дольше пишу и чем сложнее проект, тем чаще меня берут сомнения в его необходимости, потому что запросы на нем строить получается сложнее чем писать их на SQL.
Еще адын :). Есть в делфи такой компонент TTable. Считай, что твой ОРМ. По крайней мере в ту сторону. Так вот - в основном все начинают с него, а заканчивают запросами.
По теме - когда-то поигрался с алхимией и SQL-Object. Не понравилось для моих задач, особенно SQL-Object. С одной стороны SQL лучше ложится на предметную область СУБД - соответственно и код более понятный. А с другой если ты используешь СУБД, то имеет смысл дергать их возможности. Особенно если это крутые СУБД, типа оракела. При использовании ОРМ теряются все преимущества использования возможностей СУБД. И если для MySQL или SQL-Lite это простительно, поскольку там особых фич вроде как и нет, то для “больших” СУБД уже нет.
Кросплатформенность же разработки - типа прыгать на всем диапазоне СУБД - от мыскля до оракела глупость и ничего более.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB