Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 16, 2009 16:26:15

Naota
От:
Зарегистрирован: 2007-06-04
Сообщения: 197
Репутация: +  0  -
Профиль   Отправить e-mail  

Что умеет SqlAlchemy?

Давно пишут на этом замечательном ORM. Но чем дольше пишу и чем сложнее проект, тем чаще меня берут сомнения в его необходимости, потому что запросы на нем строить получается сложнее чем писать их на SQL. Наверное там есть куча возможностей, которые я не использую. А как вам помогает этот ORM ?



Офлайн

#2 Апрель 16, 2009 16:41:43

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

Что умеет SqlAlchemy?

Я ORM мало использую, зато SA-expression-language много. Конструирование запросов “по частям”, добавление условий, поддержка схемы.



Офлайн

#3 Апрель 16, 2009 17:05:15

Naota
От:
Зарегистрирован: 2007-06-04
Сообщения: 197
Репутация: +  0  -
Профиль   Отправить e-mail  

Что умеет SqlAlchemy?

Ну да, ORM в таком виде где описываются зависимости в модели я то же не использую. Expression-language конечно чуток укорачивает запросы и позволяет их составлять удобно по условиям, но сложные запросы составлять не очень прикольно в нем.



Офлайн

#4 Апрель 16, 2009 17:29:24

Naota
От:
Зарегистрирован: 2007-06-04
Сообщения: 197
Репутация: +  0  -
Профиль   Отправить e-mail  

Что умеет SqlAlchemy?

К примеру вот такой запрос:

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
До сих пор не могу его описать в алхимии.



Офлайн

#5 Апрель 17, 2009 03:10:18

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Что умеет SqlAlchemy?

Есть у меня такое наблюдение:
- если пишем stateless Web server - нужны простые запросы. Во многих случаях лучше нереляционка вообще, но это уже выходит за обсуждаемые рамки
- зато если толстый клиент - очень часто нужны именно объекты с довольно долгим временем жизни. И ORM оказывается очень в тему. Статистические репорты все еще часто лучше делать простыми запросами



Офлайн

#6 Апрель 17, 2009 09:18:49

balu
От:
Зарегистрирован: 2006-05-24
Сообщения: 521
Репутация: +  0  -
Профиль   Отправить e-mail  

Что умеет SqlAlchemy?

Naota
Но чем дольше пишу и чем сложнее проект, тем чаще меня берут сомнения в его необходимости, потому что запросы на нем строить получается сложнее чем писать их на SQL.
Еще адын :). Есть в делфи такой компонент TTable. Считай, что твой ОРМ. По крайней мере в ту сторону. Так вот - в основном все начинают с него, а заканчивают запросами.
По теме - когда-то поигрался с алхимией и SQL-Object. Не понравилось для моих задач, особенно SQL-Object. С одной стороны SQL лучше ложится на предметную область СУБД - соответственно и код более понятный. А с другой если ты используешь СУБД, то имеет смысл дергать их возможности. Особенно если это крутые СУБД, типа оракела. При использовании ОРМ теряются все преимущества использования возможностей СУБД. И если для MySQL или SQL-Lite это простительно, поскольку там особых фич вроде как и нет, то для “больших” СУБД уже нет.
Кросплатформенность же разработки - типа прыгать на всем диапазоне СУБД - от мыскля до оракела глупость и ничего более.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version