Django的ORM简介

2022-09-26 15:32:44 浏览数 (1)

有关模型层的介绍

MTV介绍

什么是模型?

  • 模型是Python中的一个类,它是由django.db.models.Moduel派生出的一个子类
  • 一个模型类就代表数据库中的一张表
  • 模型类中的每一个类的属性都代表数据库中的一个字段
  • 模型是数据交互的接口,是表示和操作数据库的方法和方式

ORM框架

  • 定义:ORM(Object Relation Mapping)即对象关系映射,它是一种程序技术,它允许你使用类和对象数据库进行操作,从而进行避免通过SQL进行操作数据库
  • 作用
    • 1.建立模型类和表之间的对应关系,允许我们通过对象的方式来操作数据库
    • 2.根据设计的模型类生成数据库的表格
    • 3.通过简单地配置就可以进行数据库的切换
  • 优点
    • 只需要面向对象编程,不需要面向数据编写代码
    • 对数据库操作都转化为对类属性和方法的操作
    • 不用编写各种数据库的SQL语句
    • 实现了数据模型与数据的解耦,屏蔽了不同数据库操作上的差异,也不用关注MySQL、ORACLE…的内部细节
  • 缺点
    • 对于复杂业务,使用成本较高…
    • 根据对象的操作转换成SQL语句,根据查询的结果转化成对象,在映射的过程中有性能损失

世间万物 即无完美

ORM

DataBase

Class(类)

Table(数据表)

Object(对象)

DataRow(数据行)

Attribute(属性)

Field(字段)

模型代码示例

该文件位于APP的models.py

代码语言:javascript复制
from django.db import models

# Create your models here.
# 模型层入口
from django.db import models

class Detection(models.Model):
    # CharField
    host_name = models.CharField("HOSTNAME",max_length=50,default='')
    addr = models.CharField("Addr",max_length=255)
    cpu_info = models.DecimalField("CPU",max_digits=7,decimal_places=2,default=0.0)

数据库迁移

  • 迁移是Django同步你对模型所做的更改(添加字段、删除模型…)到你的数据的方式.
  • 生成迁移文件python manage.py makemigrations,生成的文件保存在应用的migrations
  • 执行脚本迁移程序python manage.py migrate,会将每个应用下的migrations的文件同步回数据库

模型类-创建

代码语言:javascript复制
from django.db import models
class 模型类名(models.Model):
    字段名 = models.字段类型(字段选项)

Django配置MySQL

MacOS用户
代码语言:javascript复制
# Assume you are activating Python 3 venv
$ brew install mysql # 安装MySQL
$ pip install mysqlclient
Linux用户

请注意,这是一个基本步骤。我不能支持所有环境的完整构建步骤。如果你看到一些错误,你应该自己修复它,或者在一些用户论坛上寻求支持。不要在问题跟踪器上提交问题。

您可能需要像这样安装 Python 3 和 MySQL 开发头文件和库:

$ sudo apt-get install python3-dev default-libmysqlclient-dev build-essential # Debian / Ubuntu

% sudo yum install python3-devel mysql-devel # 红帽 / CentOS

代码语言:javascript复制
pip install mysqlclient
Win用户

在 Windows 上构建 mysqlclient 非常困难,我们使用pymysql进行代替

告诉Django用MySQL替换他的MySQLDB

  • 在你项目文件夹下面的__init__.py
  • 在你APP应用下面的__init__.py
代码语言:javascript复制
import pymysql
pymysql.install_as_MySQLdb() # 告诉django用pymysql代替mysqldb连接数据库
代码语言:javascript复制
# 将配置原封不动的写入settings.py
DATABASES = {
    'default':{
     'ENGINE':'django.db.backends.mysql', # 数据库引擎
     'HOST':'127.0.0.1',  # 地址
     'PORT':'33266', # 端口
     'NAME':'django',  # 数据库名
     'USER':'djangoapi', # 用户名
     'PASSWORD':'123123123', # 密码
     'OPTIONS':{
         'init_command':"SET sql_mode='STRICT_TRANS_TABLES'"
     },
    }
}

0 人点赞