tag:blogger.com,1999:blog-5184667931452444492.post88491948562139195..comments2023-09-11T06:19:34.892-07:00Comments on Заметки by Alexey Diyan: SQLAlchemy for Python. Some queries examples including generated SQLAlexey Diyanhttp://www.blogger.com/profile/06891673792901079262noreply@blogger.comBlogger4125tag:blogger.com,1999:blog-5184667931452444492.post-9992973172156037452011-10-17T14:15:52.782-07:002011-10-17T14:15:52.782-07:00@Дмитрий Шеховцов:
Постарался ответить на все твои...@Дмитрий Шеховцов:<br />Постарался ответить на все твои вопросы прямо внизу поста.<br /><br />@Алексей Самошкин:<br />Согласен, приведенные запросы недостаточно сложные. Постараюсь в будущем опубликовать еще примеры по мэппингу связей, мэппингу иерархий классов. Можно будет туда включить и пару примеров со сложными запросами.<br /><br />Насчет уникальных фич пока сложно сказать, на это все нужно время. Возможно по мере работы с этим ORM что-то будет попадаться под руку.<br /><br />У SQLAlchemy есть например API с помощью которого можно извлечь всю информацию о схеме БД. Это может быть полезно если ты например хочешь провести валидацию на предмет соответствия твоего мэппинга и схемы БД.<br /><br />Еще в SQLAlchemy есть поддержка database shards, который в отличии от NHibernate, находится не в alpha-версии.<br /><br />@valera:<br />Спасибо большое за комментарий. Возможно некоторые другие аспекты я немного рассмотрю в следующем посте о SQLAlchemy.Alexey Diyanhttps://www.blogger.com/profile/06891673792901079262noreply@blogger.comtag:blogger.com,1999:blog-5184667931452444492.post-22250453399788051882011-10-17T00:25:52.150-07:002011-10-17T00:25:52.150-07:001) SQLAlchemy позволяет проводить отношения 1-n, m...1) SQLAlchemy позволяет проводить отношения 1-n, m-n, 1-1. Сделано достаточно интуитивно и можно легко кастомизировать структуру в которую будут грузиться связанные элементы. Так же можно сделать ленивую загрузку и жадную загрузку для коллекции, чтобы элементы грузилить при первом обращении или сразу после запроса.<br /><br />2) Есть возможность подключить кэширование на уровне запросов; это не часть фреймверка, но входит в стандартные примеры.<br /><br />3) Кэширования 1-го уровня как такого в SQLAlchemy нет, есть Identity Map, что мне кажется более правильным с точки зрения ORM.Varelahttps://www.blogger.com/profile/09923149787670800192noreply@blogger.comtag:blogger.com,1999:blog-5184667931452444492.post-21297055390915941132011-10-16T16:27:02.324-07:002011-10-16T16:27:02.324-07:00SQL немного почище чем в NHibernate, и в целом не ...SQL немного почище чем в NHibernate, и в целом не отличается от написанного вручную. Алиасы таблиц и колонок сделаны почитабельней.<br /><br />На мой взгляд, рассмотрено слишком много стандартных запросов, в которых с большой долей вероятности справилось бы любое решение, претендующее называться ORM tool. Хотелось бы посмотреть на то, как себя ведет SQLAlchemy для сложных нетривиальных запросов, а также посмотреть на те уникальные фичи, которых нет у NH например, и о которых Вы упомянули.Alexey Samoshkinhttps://www.blogger.com/profile/17352512789879632849noreply@blogger.comtag:blogger.com,1999:blog-5184667931452444492.post-45975866358382429202011-10-16T16:19:00.669-07:002011-10-16T16:19:00.669-07:001. Что с Foreign Keys? (mapping/использование/гене...1. Что с Foreign Keys? (mapping/использование/генерируемый SQL)<br />2. 2nd layer cache (memcached)?<br />как подключается, предусмотрено ли фреймворком?<br />3. Подзапросы в NH<br />http://bartreyserhove.blogspot.com/2008/08/nhibernate-subqueries.html<br />не так красиво как в Py, но всё же<br />4. NHibernate {bulk/batching}<br />на вскидку 2 варианта<br />старый: http://nhforge.org/blogs/nhibernate/archive/2008/10/30/bulk-data-operations-with-nhibernate-s-stateless-sessions.aspx<br />и с недавнего (3.2) времени дэфолтный:<br />http://fabiomaulo.blogspot.com/2011/03/nhibernate-32-batching-improvement.htmlAnonymoushttps://www.blogger.com/profile/17916313521325593850noreply@blogger.com