栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Django7:模型层及ORM:

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django7:模型层及ORM:

一、Django配置MySQL

1、安装mysqlclient(版本mysqlclient 1.3.13以上)。

       安装前确认Ubuntu是否安装python3-dev和default-libmysqlclient-dev:

(1)查看依赖

sudo apt list –installed|grep -E ‘libmysqlclient-dev|python3-dev’

(2)若无,则安装依赖

sudo apt-get install python3-dev default-libmysqlclient-dev

(3)安装mysqlclient

sudo pip3 install mysqlclient

(4)查看mysqlclient是否安装成功

sudo pip3 freeze|grep -i 'mysql'

2、创建数据库

(1)进入mysql数据库:

create database 数据库名default charset utf8;

通常数据库名跟项目名一致

(2)settings.py配置数据库

修改DATABASES配置项,将sqlite3改为mysql

  • ENGINE:指定数据库存储引擎
  • NAME:数据库名
  • USER:登录数据库用户名
  • PASSWORD:数据库密码
  • HOST/POST:数据IP和端口

例:settings.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        # 'NAME': BASE_DIR / 'db.sqlite3',
        'NAME': 'mysite1',
        'USER': 'root',
        'PASSWORD':'123',
        'HOST': 'localhost',
        'PORT':'3306'
    }
}

三、模型和ORM

1、模型
  • 模型是一个python类,有django.db.models.Model派生出来的子类。
  • 一个模型来代表数据库中的一张数据库表
  • 模型类中每个类属性都代表数据库中的一个字段
  • 模型是数据交互的接口,是表示和操作数据库的方法和方式

例:模型类创建

from django.db import models

class 模型类型(models.Model):
	字段名 = models.字段类型(字段类型)

2、ORM

(1)定义

       ORM(Object Relational Mapping)即对象关系映射,是一种程序数据,允许你使用类和对象对数据库进行操作,从而避免sql语句操作数据里。

(2)作用

  • 建立模型和表之间的对于关系,允许我们通过面向对象的方式来操作数据库;
  • 根据设计的模型类生成数据库中的表格;
  • 通过简单的配置就可进行数据库的切换。

(3)优点

  • 只需面向对象编程,不需要面向数据库编写代码:
  • 实现了数据模型与数据的解耦,屏蔽不同数据操作上的差异

(4)缺点

  • 对于复杂业务,使用成本高
  • 根据对象的操作转换成sql语句,根据查询的结果转换成对象,在映射过程中有性能损失。

3、数据库迁移

       迁移是Django同步您对模型所做更改(添加字段,删除模型等)到你的数据库模型的方式。

(1)生成迁移文件:python3 manage.py makemigrations

       将应用下的models.py文件生成一个中间文件,并保存在migrations文件夹中。

(2)执行迁移脚本程序:python3 manage.py migrate

       执行迁移程序实现迁移。将每个应用下的migrations目录中的中间文件同步回数据库。

例:

(1)创建应用:

python3 manage.py startapp bookstore

(2)注册应用:

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'music',
    'bookstore',
]

(3)bookstore/model.py

from django.db import models


class Book(models.Model):
    title = models.CharField('书名', max_length=50, default='')
    price = models.DecimalField('价格', max_digits=7, decimal_places=2)

(4)生成迁移文件

python3 manage.py makemigrations

(5)执行迁移脚本

python3 manage.py migrate

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/869772.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号