Python(Web篇)---Django框架【二】数据库ORM模块--配置及参数

一、Django的模型

Django拥有自己的ORM模块,但是Django鼓励开发者进行松耦合开发,耦合就是代码功能直接联系,所谓松耦合代表项目被分为多个相对独立,可以迁移,可以单独修改的功能模块,所以,基于Django数据库操作被设计在了app(application)当中,类似手机上的app,手机本身只是提供了运行功能的环境,具体功能使用app实现。同理,基于django,项目是实现的环境,具体的功能写在不同的app下。

(一)创建APP

(D:\Anaconda3\envs\D_37) F:\0831Pro\DjPro\Qshop>python manage.py startapp Goods
(D:\Anaconda3\envs\D_37) F:\0831Pro\DjPro\Qshop>

(二)认识APP目录结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CpUZ6N8N-1606314187868)(image//image-20201030155733080.png)]

migrations 数据库同步记录目录

init.py 包文件

admin.py python自带后台管理文件

apps.py 应用的主文件(通常不用)

models.py 数据库模型文件

tests.py 自带的单元测试文件

views.py 视图文件

二、Django数据库

对现代的Web应用程序而言,视图逻辑经常需要与数据库交互。在数据库驱动型网站中,网站链接数据库服务器,从中检索数据,然后在网页中把数据显示出来。此外,可能还会提供让访客自行填充数据库的方式。Django非常适合构建数据库驱动型网站,它提供了简单而强大的工具(ORM),易于使用python执行数据库查询。

(一)ORM介绍

Object Relational Mapping,简称ORM,又叫对象关系映射,将面向对象语言程序中的对象自动持久化到关系数据库中。本质上就是将数据从一种数据(对象)转化成另外一种数据(数据库表格)。

通过ORM怎样进行转换呢?

  1. Python中的一个类对应数据库中的一张表格
  2. Python中的一个对象对应表格中的一条记录
  3. Python中的一个类的属性对应表格中的字段

ORM优势: ORM提供了对数据库的映射,不用直接编写SQL代码,只需像操作对象一样从数据库操作数据。让软件开发人员专注于业务逻辑的处理,提高了开发效率。Django的ORM会自动生成id主键
ORM劣势: 在一定程度上牺牲程序的执行效率

(二)Django ORM建模

Django的数据库模型,必须在在app的models当中创建。

from django.db import models

# Create your models here.
class Goods(models.Model):
    g_name = models.CharField(max_length = 32) #字符串
    price = models.FloatField() #小数
    number = models.IntegerField() #整数
    public_time = models.DateField() #时间
    shelf_life = models.IntegerField() #保质期 12
    safe_unit = models.CharField(max_length = 32) #保质期单位

(三)配置数据库

1. 安装app

在这里插入图片描述

2. sqlite数据库配置

在这里插入图片描述

3. mysql数据库配置

在这里插入图片描述

使用mysql遇到问题
  1. 需要安装pymysql
(D:\Anaconda3\envs\D_37) F:\0831Pro\DjPro\Qshop>pip install  pymysql
Collecting pymysql
  Using cached PyMySQL-0.10.1-py2.py3-none-any.whl (47 kB)
Installing collected packages: pymysql
Successfully installed pymysql-0.10.1
  1. django默认使用MySQLdb这个模块操作mysql数据库,需要进行配置
    在这里插入图片描述
    同步数据之前可以根据错误,对源码进行适当的修改。
    在这里插入图片描述
    在这里插入图片描述

  2. 然后进行数据库同步

  • 校验配置 python manage.py check
(D:\Anaconda3\envs\D_37) F:\0831Pro\DjPro\Qshop>python manage.py check
System check identified no issues (0 silenced).
  • 生成数据库迁移语句 python manage.py makemigrations
(D:\Anaconda3\envs\D_37) F:\0831Pro\DjPro\Qshop>python manage.py makemigrations
Migrations for 'Goods':
  Goods\migrations\0001_initial.py
    - Create model Goods
  • 同步数据库 python manage.py migrate

(四)相关参数

常用的建模字段

字段描述
CharField字符串,必须有max_length
IntergerField整数
FloatField小数
TextField长文本
DateField时间 年月日
DateTimeField时间 年月日时分秒
EmailField邮件格式的字符串
FileField文件,需要upload参数和media配置
ImageField图片,需要upload参数和media配置和pillow模块

常用的建模参数

参数描述
max_length长度
verbose_name字段别名
default默认值
unique唯一
blank是否可以为空,Django数据库默认不可以为空
null是否可以null
upload_to上传地址,用在图片和文件
auto_now默认当前时间
primary_key主键
数据库管理界面

创建超级用户
python manage.py createsuperuser

(D:\Anaconda3\envs\D_37) F:\0831Pro\DjPro\Qshop>python manage.py createsuperuser
Username (leave blank to use 'dell'): admin
Email address: admin@qq.com
Password:
Password (again):
The password is too similar to the username.
This password is too short. It must contain at least 8 characters.
This password is too common.
Bypass password validation and create user anyway? [y/N]: y
Superuser created successfully.

绑定模型到后台
在这里插入图片描述

修改列表样式

在这里插入图片描述

修改语言,时区
在这里插入图片描述


至此,基本数据库配置完成,可以开始对数据库进行系列操作了。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值