Django学习--ORM机制详解

1.定义:
对象关系映射(Object Relational Mapping,简称ORM),用于实现面向对象编程语言里不同类型系统的数据之间的转换。 换句话说,就是用面对对象的方式去操作数据库的创建表,增,删,改,查等操作。
类名对应------》数据库中的表名

类属性对应---------》数据库里的字段

类实例对应---------》数据库表里的一行数据


2.演示:查看ORM生成sql语句
    1)使用QuerySet中的query属性
1425005-20180623203018258-850336618.png

    2)配置日志系统,将sql显示到控制台
        只需在settings.py中配置如下logging即可
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'handlers': {
        'console':{
            'level':'DEBUG',
            'class':'logging.StreamHandler',
        },
    },
    'loggers': {
        'django.db.backends': {
            'handlers': ['console'],
            'propagate': True,
            'level':'DEBUG',
        },
    }
}
 
1
LOGGING = {
2
    'version': 1,
3
    'disable_existing_loggers': False,
4
    'handlers': {
5
        'console':{
6
            'level':'DEBUG',
7
            'class':'logging.StreamHandler',
8
        },
9
    },
10
    'loggers': {
11
        'django.db.backends': {
12
            'handlers': ['console'],
13
            'propagate': True,
14
            'level':'DEBUG',
15
        },
16
    }
17
}
    3)使用一些开发工具:如django_debug _toolbar

3.ORM优缺点:
    优点:1)是的我们的通用数据库交互变得简单易行,并且完全不用考虑该死的SQL语句,快速开发,由此而来。同时也可以避免一些新手程序猿写sql语句带来的性能和效率问题。
               2)Django的orm操作本质上会根据对接的数据库引擎,翻译成对应的sql语句;所有使用Django开发的项目无需关心程序底层使用的是MySQL、Oracle、sqlite....,如果数据库迁移,只需要更换Django的数据库引擎即可
    缺点:1)性能有所牺牲,不过现在的各种ORM框架都在尝试使用各种方法来减轻这个问题(LazyLoad,Cache),效果还是很显著。
               2)对于个别复杂查询,ORM仍然力不从心,为解决这个问题,ORM框架一般也提供直接写原生sql代码。




转载于:https://www.cnblogs.com/hskullbk/p/9218789.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值