首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >SQLAlchemy能做什么和Django ORM不能做什么的示例

SQLAlchemy能做什么和Django ORM不能做什么的示例
EN

Stack Overflow用户
提问于 2013-08-13 08:58:32
回答 2查看 21.3K关注 0票数 86

我最近做了很多研究,对比在SQLAlchemy中使用金字塔和在Django中保留当前的应用程序。这本身就是一场完整的辩论,但我不在这里讨论这个。

我想知道的是,为什么人们普遍认为SQLAlchemy比Django ORM更好?几乎所有的比较,如果不是所有的比较,我发现在这两个有利于SQLAlchemy。我认为性能是一个很重要的因素,因为SQLAlchemy的结构让它可以更顺利地转换为SQL。

但是,我也听说对于更难的任务,Django ORM几乎不可能使用。我想了解一下这个问题会有多大。我一直在读到切换到SQLAlchemy的原因之一是Django ORM不再满足您的需求。

所以,简而言之,有人能提供一个查询(不一定是实际的SQL语法),SQLAlchemy可以做到,但Django ORM不可能不添加额外的原始SQL就做到吗?

更新

自从我第一次问起,我就注意到这个问题得到了相当多的关注,所以我想多加两分钱。

最后,我们最终使用了SQLAlchemy,我必须说我对这个决定很满意。

我重新讨论这个问题是为了提供SQLAlchemy的一个附加特性,到目前为止,我还无法在Django ORM中复制该特性。如果有人能提供一个如何做到这一点的例子,我将很乐意收回我的话。

假设你想使用一些postgresql函数,比如some (),它提供一个模糊的比较(参见:Finding similar strings with PostgreSQL quickly - tl;dr输入两个字符串得到一个百分比的相似度)。

我对如何使用Django ORM做了一些搜索,除了使用原始sql之外什么也没有找到,从他们的文档中可以明显看出:https://docs.djangoproject.com/en/dev/topics/db/sql/

代码语言:javascript
复制
Model.objects.raw('SELECT * FROM app_model ORDER BY \
similarity(name, %s) DESC;', [input_name])

然而,SQLalchemy有http://docs.sqlalchemy.org/en/latest/core/sqlelement.html#sqlalchemy.sql.expression.func (),如下所示:

代码语言:javascript
复制
from sqlalchemy import desc, func
session.query(Model).order_by(func.similarity(Model.name, input_name))

这允许您为任何已定义的sql/postgresql/etc函数生成sql,而不需要原始sql。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18199053

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档