Django模型基础

本节先介绍一下Django框架模型的基础知识,主要包括Django模型介绍、Django模型与ORM,以及Django模型与MySQL等方面的内容。

3.1.1 Django模型介绍

Django模型主要用来关联数据库,相当于一个ORM(对象关系映射)系统。Django框架提供了对各种主流数据库很友好的支持,这些数据库包括PostgreSQL、SQLite、MySQL、MariaDB和Oracle等。Django模型为这些数据库提供了统一的API调用接口,设计人员可以直接根据项目业务需求选择不同的数据库。Django模型包含了储存数据的字段与行为,一般每个模型都会映射一张数据库表。

Django框架与数据库相关的代码一般写在models.py文件中,相关的配置信息在settings.py文件中完成即可(可参看第2章的内容)。将配置信息写在settings.py文件中的好处是,models.py文件只负责关注业务代码即可,无须关心具体的数据库类型。

3.1.2 Django模型与ORM

ORM(Object Relational Mapping,对象关系映射)是一种程序设计与软件工程技术。ORM可以用于在面向对象编程中实现不同类型系统之间的数据转换。

ORM从功能上来讲,相当于实现了一个在编程语言中可以使用的"虚拟对象数据库"。此时,ORM就相当于一个中间层的逻辑数据,连接着上层的编程语言与底层的实体数据库。

Django模型设计了自己的ORM,并基于Python语言实现。Django模型在业务逻辑层和实体数据库之间充当着桥梁的作用,通过使用描述对象和实体数据库之间的映射的元数据,将程序中的对象自动持久化到实体数据库中。

在Django官方文档中,关于Django模型有如下的说法:

  • 一个Django模型相当于一个Python的类,该类继承自django.db.models.Model。
  • Django模型类的每个属性都相当于一个数据库的字段。
  • Django模型为设计人员自动生成访问数据库的API。

3.1.3 Django模型与MySQL

MySQL是Web应用开发中比较常用的关系数据库,这里我们就以MySQL数据库为例,详细介绍在Django模型中使用数据库的方法。另外,如果读者还没有使用过MySQL数据库,就要花一些时间先熟悉一下MySQL。

如果想在Django模型中使用MySQL数据库,就需要先安装Python语言解释器下的MySQL客户端驱动。MySQL客户端驱动有很多种,这里选择pymysql驱动。安装时需要使用pip工具,具体命令如下:

python --m pip install pymysql

安装过程中如果出现问题,就耐心多试几次。安装完成后,命令行会给出"安装成功"的提示信息,如图3.1所示。这里安装的pymysql版本是1.1.0,该版本是当前的最新版。

为了进一步验证pymysql驱动已经成功安装,可以使用pip list命令查看一下Python的第三方插件列表,具体如图3.2所示。

插件列表中给出的版本号与图3.1中的是一致的,证明pymysql驱动确实已经安装成功了。

其实,除了pymysql驱动之外,还有一个mysqlclient驱动也非常受欢迎。安装mysqlclient驱动会相对麻烦一些,在线安装经常会出问题。不过,我们也可以将mysqlclient驱动包下载到本地进行安装,具体如图3.3所示。提示信息显示mysqlclient驱动安装已经成功了,相应的版本号为2.2.1。

关于pymysql驱动和mysqlclient驱动:pymysql驱动是由纯Python语言编写的,因此与Python解释器契合程度最好;而mysqlclient驱动的执行速度很快,性能优势很明显。

文节选自《Django 5企业级Web应用开发实战(视频教学版)》,获出版社和作者授权发布。

相关推荐
为思念酝酿的痛27 分钟前
C语言操作MySQL
数据库·mysql
用户0190275816137 分钟前
A 股到价提醒机器人:AlphaFeed + 飞书/钉钉 Webhook
python
特立独行的猫A1 小时前
Ionic + 仓颉语言的 cj-tauri 开发框架实战:开发精美移动端 APP
java·后端·python
高洁011 小时前
数据同化与动态状态估计:让孪生持续贴合现实
人工智能·python·深度学习·transformer·迁移学习
通信仿真爱好者2 小时前
第【139】期--基于深度学习的OFDM信道估计方法研究--python完整代码
python·深度学习·ofdm·信道估计
威哥爱编程2 小时前
模拟面试智能体开发实战 07:答完一题就点评一题,结构化输出给分建议,让每道题都变成复盘
python·agent·harmonyos
cpolar技术支持2 小时前
中文文件名排序跟拼音对不上:os.listdir 返回的是文件系统顺序,三个中文名按字节排结果正好相反
python·文件系统·cpolar·编码·排序
Thanks_ks2 小时前
【第 008 讲】在终端中运行 Python 程序:交互模式与脚本模式 | 绝对路径与相对路径 | 以模块方式运行 | 常见报错的识别与排查
python·异常处理·终端·脚本·命令行·cmd·python 解释器
威哥爱编程2 小时前
模拟面试智能体开发实战 08:总评报告先过三道闸,防泄题防夸大防错建议,才敢发到候选人手上
python·agent·harmonyos
郝学胜-神的一滴2 小时前
LangChain Skill 实现(渐进披露 On-Demand Skill,LangChain 官方 Deep Agent Skill 模式)
开发语言·python·langchain·numpy