zoukankan      html  css  js  c++  java
  • django框架的ORM模型优缺点

    1,django中ORM只能通过ForeignKey定义多对一的关系,不能显式地定义一对多关系;

    特别是读代码时,第一个类定义完全没法提示一对多的关系。我必须要看到了第二个类定义,才能搞明白两个模型之间的关系。真希望有一种显式说明关系的办法,降低读代码时的认知负担。

    2.聚合:

      django进行聚合查询的时候,orm在表达对GROUP BY上表示很无奈,只有annotate()和aggressive()这两种查询方法,但是对于一些复杂的查询就很魔幻。

    3.查询:

    Django在通过一些方法来实现,绝大多数返回的是Django自定义的queryset的迭代器,然而python会对这些作懒惰求值,然而这些方法并不会真正的操作数据库,

    即通过命名方式来控制查询行为。我看过有的ORM是用lambda的形式来表达WHERE条件,还有的会做一个类似于contains()的方法,都要比Django ORM的方式好看。如果是跨表查询,Django的方式就更丑了:

    Customer.objects.filter(company__name__contains="xxx")

    无限的双下划线啊……

    总的来说,Django ORM在实现基础的数据库操作方面没问题。但如果需要构建复杂的SQL语句,与其在Django ORM里绕来绕去,还不如直接用原始的SQL语句。这个是我最强烈的一个感受。

  • 相关阅读:
    C#中的abstract、virtual、interface关键字
    tsql字符串截取
    C# byte换算
    apple-mobile-web-app-capable
    Content-Security-Policy
    sqlserver建立连接服务器
    20 ViewPager Demo4自动轮播
    20 ViewPager Demo3指示器
    20ViewPager demo1,2:接收ViewPager展示View的使用
    有没有最好的学习Angularjs2的视频入门体验?
  • 原文地址:https://www.cnblogs.com/zhuyafeng/p/9498637.html
Copyright © 2011-2022 走看看