zoukankan      html  css  js  c++  java
  • 初步学习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代码。
  • 相关阅读:
    Ftp、Ftps与Sftp之间的区别
    Previous Workflow Versions in Nintex Workflow
    Span<T>
    .NET Core 2.0及.NET Standard 2.0 Description
    Announcing Windows Template Studio in UWP
    安装.Net Standard 2.0, Impressive
    SQL 给视图赋权限
    Visual Studio for Mac中的ASP.NET Core
    How the Microsoft Bot Framework Changed Where My Friends and I Eat: Part 1
    用于Azure功能的Visual Studio 2017工具
  • 原文地址:https://www.cnblogs.com/hcyjjp/p/10417766.html
Copyright © 2011-2022 走看看