前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Django的ORM简介

Django的ORM简介

作者头像
Yuou
发布2022-09-26 15:32:44
5860
发布2022-09-26 15:32:44
举报
文章被收录于专栏:乱七八糟技术日常

有关模型层的介绍

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'"
     },
    }
}
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 有关模型层的介绍
  • 什么是模型?
  • ORM框架
    • 模型代码示例
      • 数据库迁移
        • 模型类-创建
          • MacOS用户
          • Linux用户
          • Win用户
      • Django配置MySQL
      相关产品与服务
      云数据库 SQL Server
      腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档