Django入门教程

前言

第一章: django快速入门

第二章: django MTV架构

第三章: django视图

第四章: django模板

第五章: django模型

第六章: django后台管理系统

第七章: 项目实战-简易的博客系统

第八章:django表单

第九章:django用户认证系统

第十章:django中的会话

第十一章:django安全

第十二章:django性能优化

第十三章:django实用工具

首页 > Django入门教程 > 第五章: django模型 > 5.1节: 数据库与模型

5.1节: 数据库与模型

薯条老师 2020-07-23 15:08:02 232261 0

编辑 收藏

广州番禺Python, Java小班周末班培训

薯条老师在广州做Python和Java的小班培训,一个班最多10人,学员的平均就业薪资有11K不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析,Python量化投资,Python机器学习,Java中高级后端开发。授课详情请点击:http://chipscoco.com/?cate=6

5.1.1 django模型与数据库

在MTV架构中,模型层负责与数据库相关的操作,例如数据的定义,数据的存储,数据的读写,数据的校验等。在django中进行模板渲染,主要是指通过模型来获取数据,然后根据不同的数据来生成不同的网页内容。django中的模型层依托于底层的数据库来对数据进行存储,读写等操作,读者在学习django模型前,有必要先学习与数据库相关的基础知识。

image.png 

 

5.1.2 数据库基本概念

什么是数据库?

数据库,简单地理解,就是存储数据的仓库,按存储介质的不同,计算机中的数据库又可分为硬盘数据库和内存数据库。硬盘数据库,即数据存储在硬盘上。而内存数据库,是将数据存储在内存中。在硬盘中进行存储的优点是,容量大,可以持久化存储,但是读写速度相对较慢,在内存中进行数据存储,读写速度快,但容量小,且不能进行持久化存储,一旦关闭电源,内存中的数据就会消失。

内存数据库在具体的实现中,可以定期将内存中的数据转储到文件中,以实现持久化存储。

 下图所示为数据库的定义及分类:

 image.png 

DBMS

DBMS是数据库管理系统的英文简写,是一种专门用来对数据进行管理和控制的系统软件,通过DBMS可以创建,使用,维护数据库。DBMS是在文件系统的基础上发展而来,同简单的文件存储一样,都是对数据进行组织的管理技术。用户直接使用文件进行数据共享时,利用的是操作系统提供的接口来进行文件的读写。使用DBMS时,利用的是DBMS对外提供的用户接口来对数据进行处理。

DBMS在内部实现中,也是以文件来进行存储的,同简单文件存储的区别在于,DBMS在内部采用了复杂的数据模型来表示数据结构,真正的实现了以数据为中心的数据共享。DBMS是程序员编写的一个复杂软件,它对数据进行集中的管理和控制,来保证数据的安全性和完整性。

DBMS进行分类,按数据组织和实现方式的不同,可以分为关系型的DBMS和非关系型的DBMS。在计算机中,用NoSQL来泛指非关系型的数据库管理系统。

结构化查询语言:SQL

结构化查询语言对应的英文为:Structured Query Language,简称为SQL,是一种数据库查询语言。在RDBMS中,用来对数据进行查询、更新,以及对数据库系统进行管理。

SQL首先是在IBM的关系数据库SystemR上实现的,由于其简洁易学,功能丰富,一经推出,便大受业界和用户的欢迎。1980年10月由ANSI的数据库委员会进行批准,将其作为关系型数据库语言的美国标准。

学习结构化查询语言,主要是学习SQL中的动词的用法,结构化查询语言的主要组成部分: 

DDL数据定义语言, 其核心动词包括CREATE,DROP,ALTER,分别表示表格的创建,表格的删除,表格的修改。
DQL数据查询语言,核心的动词为SELECT,表示从表格中查询数据。
DML数据操作语言,核心的动词为INSERT,UPDATE,DELETE,分别表示在表格中插入数据,在表格中更新数据,在表格中删除数据。
TCL事务控制语言,使用事务控制语言用来对DML语句进行事务控制,核心动词为COMMIT,ROLLBACK,分别表示对事务进行提交,对事务进行回滚。

5.1.3 django中的默认数据库

django默认采用的是sqlite数据库,无需额外配置。sqlite是一款开源的,高性能的关系型数据库,支持事务操作,其占用的资源非常低,常用来作为嵌入式产品的标配数据库。sqlite的另外一个显著特性是,无需安装和管理配置,整个数据库存储在一个单一的文件中。读者打开D盘django-project目录,会发现目录中存在一个db.sqlite3文件,该文件即为sqlite数据库。文件名中的sqlite3表示SQLite的最新版本:SQLite 3。

5.1.4 配置其它的数据库

企业中常用的其它开源数据库有MySQL, MongoDB,前者也是一款使用广泛的关系型数据库,后者是一款高性能的NoSQL数据库。采用何种数据库,需根据实际的项目需求以及数据库本身的特性来进行分析。

SQLite数据库的特点是轻量,速度快,如果只是在单机环境中进行使用,且数据规模不是很大的情况下,使用SQLite就已经完全足够。MySQL或MongdoDB就比较适合数据规模大,需要对数据进行复杂处理,以及数据库与服务器进行分开部署的应用场景。

 在本节的内容中,薯条老师教大家在django中配置MySQL数据库的方法。现在请读者按照以下步骤进行操作:

(1) 打开settings.py

在D:\django-project\chipscoco目录中可以找到settings.py文件,到现在为止,读者对settings.py文件的作用应该比较熟悉了。 在前面章节的内容中,我们在settings.py中注册Django应用blog, 以及配置项目的模板目录以及静态目录。

打开settings.py,找到与数据库配置相关的全局变量DATABASES,该全局变量定义了与数据库配置的相关信息。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

DATABASES变量是一个字典类型,对键名default的值进行修改,可以配置其它的数据库。在默认配置中,我们可以看到django配置的为sqlite数据库。django项目根目录下的db.sqlite3文件即为sqlite数据库。

 (2) 修改DATABASES变量

对default的键值进行修改,修改后的代码为:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'database_name',
        'USER': 'user_of_mysql',
        'PASSWORD': 'password_of_mysql',
        'HOST': 'localhost',
        'PORT': 3306
    }
}

在以上代码中,NAME用来定义mysql的数据库名,USER用来定义mysql的用户名,PASSWORD用来定义mysql的登录密码,HOST用来定义mysql服务器的地址,PORT用来定义mysql服务器的端口。同学们要注意的是,在配置使用mysql前,需要先安装mysql服务器。

5.1.5 在模型中使用数据库

django使用ORM将模型中的对象与底层数据库的操作进行了映射,使得开发者可以通过对象操作的方式来使用数据库,而无需进行SQL语句的编写。在5.2节的内容中,会继续对ORM进行讲解。

5.1.6 最具实力的小班培训

薯条老师在广州做Python和Java的小班培训,一个班最多10人。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。打算参加小班培训的同学,必须遵守薯条老师的学习安排,认真做作业和项目。把知识学好,学扎实,那么找到一份高薪的工作就是很简单的一件事。

(1) Python后端工程师高薪就业班,月薪11K-18K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,包拿Offer
(3) 数据分析高薪就业班,月薪11K-15K, 免费领取课程大纲
(4)
Python大数据挖掘,量化投资就业班,月薪12K-25K,免费领取课程大纲

扫码免费领取Python学习资料:



欢迎 发表评论: