码迷,mamicode.com
首页 > 其他好文 > 详细

Django学习--ORM机制详解

时间:2018-06-23 22:39:51      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:class   框架   and   string   console   日志系统   level   mirror   面向   

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

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

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


2.演示:查看ORM生成sql语句
    1)使用QuerySet中的query属性
技术分享图片

    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代码。




Django学习--ORM机制详解

标签:class   框架   and   string   console   日志系统   level   mirror   面向   

原文地址:https://www.cnblogs.com/hskullbk/p/9218789.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!