zoukankan      html  css  js  c++  java
  • Web开发基础之Django三

      一,ORM概念

      1,ORM介绍

      对象关系映射  用于实现面向对象编程语言里不同类型系统数据之间的转换。

      其就是使用面向对象的方式,操作数据库进行表管理和增删改查操作等。

      2,ORM的作用和优点

      Django中的对ORM进行封装,对接数据库引擎,执行对应的SQL语句。

      使用者无需关心数据库引擎具体实现的软件(Mysql,sqlite......)。重点把握业务逻辑实现即可。之后如果数据库软件更换需要迁移,直接修改相关配置即可。

      优点:

      ORM使操作数据库变的更为简单、快捷。无需直接编写SQL语句,快速开发。

      二,ORM建表

      1,映射关系

      Django框架中,通过ORM模型进行数据库的管理和操作。

      通过Python代码,Django的ORM模型将代码转为SQL语句,操作数据库。

      以下为对应关系:

      类名  ====  表名

      属性  ====  字段

      类实例对象   ====  表记录

       2,创建模型(表定义)

      创建一个app03应用。模型代码的学习

    python manage.py startapp app03
    

      创建应用出错

    ModuleNotFoundError: No module named 'app03'
    

       排错:之前创建过该应用的路由,在主路由urlr.py内删除对应项目的路由即可

       创建应用后查看文件夹

       设置路由

      主路由

       app03路由

       setting添加对应项目

      创建一张表,只需在应用下的model.py中定义对应的类模型即可。继承models.Model。

    常用的模型字段有哪些:
    CharField  -> 字符串类型
    BooleanField -> 布尔类型
    IntegerField -> 整数类型
    DateField / DateTimeField -> 时间类型
    EmailField -> Email类型
    TextField -> 文本类型
    更多:
    	https://docs.djangoproject.com/en/1.11/ref/models/fields/#field-types
    https://docs.djangoproject.com/en/1.11/ref/models/fields/#django.db.models.CharField
    

      示例:编写一个类模型

    from django.db import models
    
    # Create your models here.
    class Host(models.Model):
        hostname = models.CharField()
        ip = models.CharField()
        type = models.CharField()
        status = models.CharField()
    

      3,字段属性

      字段属性,用来限制字段的最大长度,Null值,默认值,主键,唯一性,备注等信息

    (1)max_length
    CharField需要max_length参数来指定VARCHAR数据库字段的大小。
    (2)null
    如果为True,Django 将用NULL来在数据库中存储空值。 默认值是 False。
    (3)default
    字段的默认值。可以是一个值或者可调用对象。如果可调用 ,每有新对象被创建它都会被调用。
    (4)primary_key
    如果为True,那么这个字段就是模型的主键。如果你没有指定任何一个字段的primary_key=True,Django 就会自动添加一个IntegerField字段做为主键,所以除非你想覆盖默认的主键,否则没必要设置任何一个字段的primary_key=True。
    (5)unique
    如果该值设置为 True, 这个数据字段的值在整张表中必须是唯一的。
    (6)verbose_name
    备注的名字,可读更好。
    (7)choices
    由元祖组成的一个可迭代对象(例如,列表或元组),用来给字段提供选择项。 如果设置了choices ,默认的表单将是一个选择框而不是标准的文本框,而且这个选择框的选项就是choices 中的选项。
    举一个例子:我们在使用探测主机功能的时候,我们会记录成功或者失败,这个时候我们就可以使用choices。
    

      修改models.py

    from django.db import models
    
    # Create your models here.
    Types = (
            (1, 'web服务器'),
            (2, '数据库主服务器'),
            (3, '负载均衡服务器'),
            (4, '数据库从服务器'),
            (5, '数据库中间件服务器'),
            (6, '缓存中间件服务器'),
            (7, '日志分析服务器'),
            )
    Status = (
            (0, '下线'),
            (1, '在线')
            )
    
    class Host(models.Model):
        hostname = models.CharField(max_length=50, verbose_name='主机名称')
        ip = models.CharField(max_length=15, verbose_name='IP地址')
        type = models.IntegerField(choices=Types, verbose_name='服务器类型')
        status = models.IntegerField(choices=Status, verbose_name='服务器状态')
    

      4,模型原数据

      模型元数据是“任何不是字段的数据”,比如排序选项(ordering),数据库表名(db_table)。在模型中添加class Meta是完全可选的,所有选项都不是必须的。

      Meta选项参数

    (1)db_table
    指定自定义数据库表名的。Django有一套默认的按照一定规则生成数据模型对应的数据库表名,如果你想使用自定义的表名,就通过这个属性指定。
    若不提供该参数, Django 会使用 app_label + '_' + module_name 作为表的名字。当你通过db_table覆写表名称时,强烈推荐使用小写字母给表命名
    (2)ordering
    这个字段是告诉Django模型对象返回的记录结果集是按照哪个字段排序的
    		例如:
     class Meta:
         ordering = ['- name']
    它是一个字符串的列表或元组。每个字符串是一个字段名,前面带有可选的“-”前缀表示倒序。前面没有“-”的字段表示正序。
    (3)verbose_name
    可读性更高的名字。可以认为是一个表名注释。
    

      5,迁移数据

      创建和迁移数据库表,一般执行两个步骤

      ①makegrations 根据类模型 创建迁移文件

      ②migrate 通过迁移文件,进行数据表的创建和修改操作(连接数据库,管理表)

      注意:

      当模型初次创建和修改都需要执行

      ①进入操作命令行

      ②执行makegrations创建迁移文件

    d:webdevopsmydjango>python manage.py makemigrations app03
    Migrations for 'app03':
      app03migrations001_initial.py
        - Create model Host
    

       创建的文件在以下目录

      如果遇到以下问题

       需要在settings.py 配置

      ③执行migrate迁移命令

    d:webdevopsmydjango>python manage.py migrate app03
    Operations to perform:
      Apply all migrations: app03
    Running migrations:
      Applying app03.0001_initial... OK
    

       以上操作就完成了Django中ORM模型。数据表的创建和修改已经完成。

      问:Django连接数据库和数据表在哪里?表创建到哪儿了?

      答:默认Django使用的sqlite数据库,sqlite是一个小型数据库,一个文件。

      打开sqlite需要按照database控件 

      安装控件参考:

      

  • 相关阅读:
    Python3报错处理:UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)
    Python/Shell/MySQL时间获取与格式转换
    MySQL客户端不需要commit代码需要commit原因分析
    Python3多线程及线程池实现教程
    人工智能、机器学习及深度学习的区别与联系
    GitHub基本使用操作
    Python3 UNIX domain sockets使用代码实现
    Linux core dump文件生成与使用
    Linux setuid使用
    Shell脚本调试操作
  • 原文地址:https://www.cnblogs.com/minseo/p/14107304.html
Copyright © 2011-2022 走看看