zoukankan      html  css  js  c++  java
  • Day56 web框架--Django--ORM

    一,ORM(对象关系映射) 很多语言的很多web框架中都有这个概念:

      1.ORM模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术

      2.ORM是通过使用描述对象和数据库之间映射的元数据,将数据中的对象自动持久化到关系型数据库中

      3.ORM在业务逻辑层和数据层之间充当了桥梁的作用

      

      Q:为什么要有ORM?

        写程序离不开数据,(程序的本质,数据和数据的变化)

      

    二,Python程序通过ORM连接数据库

      1.ORM与SQL语句

        1.新的语法,不需要我们自己写sql语句

        2.我们按照新的语法写代码,ORM翻译成sql语句

      2.ORM优点

        1.开发效率高

        2.容易掌握

        3.容易移植

      3.ORM缺点

        1.代码的执行效率

      4.ORM的重点

    #映射关系
    类       <-->   数据表
    属性     <-->   字段
    对象     <-->   数据行

      5.ORM能做的时期

        1.操作数据表

        2.操作数据行

      6.Django中ORM如何使用

    1.告诉Django框架连接哪个数据库
        DATABASES = {
            'default': {
                'ENGINE': 'django.db.backends.mysql',  # 告诉Django要连接的是MySQL数据库
                'NAME': 'day57',  # 数据库名称
                'HOST': '127.0.0.1',  # 数据库的IP
                'PORT': 3306,  # 数据库的端口
                'USER': 'root',  # 连接数据的账号
                'PASSWORD': '123'  # 连接数据库的密码
                }
        }
    
    2.告诉Django框架用什么连接数据库
        在和settings.py同目录下的__init__.py文件中
        import pymysql
        pymysql.install_as_MySQLdb()
    
    3.在app下面的models.py这个文件中定义类
        class 类名(model.Model):
            pass
    
    4.两个操作数据库的命令
        1.记录models.py的变更,并生成文件
            python manage.py makemigrations
        2.把变更记录翻译成sql语句,取数据库执行
            python manage.py migrate

    三,实例:图书管理系统

    1.表结构设定
        1.出版社
        2.书籍
        3.作者表
        4.作者和书籍的关系表
    
    2.出版社表的增删改查
        1.查
            1.查询所有出版社数据
                ORM:publisher.objects.all()        
            2.HTML中写for循环(模板语言)
                {% for i in [...,...] %}
                {% endfor %}
        2.删
            1.HTTP中URL添加参数
                /delete_publisher/?id=1
            2.如何在Django中获取url中的参数
                request.GET                  -->返回值时一个大字典
                request.GET.get('id')      -->取值
            3.ORM中删除操作
                Publisher.objects.filter(id=1).delete()
        3.改
            1.ORM修改
                obj.name = '新出版社名称'
                obj.save()          -->把改动提交到数据库
        4.增
            1.ORM创建数据
                Publisher.objects.create(name='新华出版社')

      

        

      

  • 相关阅读:
    奔驰4-MATIC和奥迪quattro的区别和共同点是什么(杂记)
    ibatis.net:QueryForObject(转)
    iBatis入门(转)
    javax.servlet.ServletException: java.lang.NullPointerException 空指针异常
    报错:Action[/statisticsManage] does not contain specified method (check logs)
    eclipse下,64位tomcat报错(转)
    Resource '/servers' does not exist 问题的解决(转)
    Ext.data.SimpleStore的使用方法
    combo的displayField和valueField属性
    Exception occurred during processing request: null java.lang.NullPointerException
  • 原文地址:https://www.cnblogs.com/lianyeah/p/9858738.html
Copyright © 2011-2022 走看看