• 初步学习Django-第五篇:ORM详解


    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代码。
  • 相关阅读:
    openwrt编译出错处理记录
    转:小白编译openwrt固件教程
    转:openwrt中luci学习笔记
    (转)内存和外设的统一编址及独立编址
    (转)无法打开C盘,提示"本次操作由于这台计算机的限制被取消,请与你的管理员联系”
    (转)c# 解析JSON的几种办法
    计算机中断(转贴,很经典的解释)
    转:用WCAT进行IIS压力测试
    转:windows命令行下如何查看磁盘空间大小
    转:如何在32位程序中突破地址空间4G的限制
  • 原文地址:https://www.cnblogs.com/hcyjjp/p/10417766.html
Copyright © 2020-2023  润新知