演示使用软件
软件:PyCharm Community Edition 2021.3.3、Navicat for MySQL
python版本:Python 3.9.7
mysql版本: 5.5.61
Django版本: 2.0
1、创建数据库
本次项目的测试数据库为mysql,使用可视化软件Navicat。
新建一个数据库,取名为books。
create database books default charset utf8;
2、给项目导入mysql驱动
我们继续来完善上一个books项目,首先从配置项目使用的数据库开始。
2.1 安装pymysql包
安装Python操作MySQL的依赖库, Python 3中通常使用PyMySQL,Python 2中通常用MySQLdb。
在File->Setting->Project:Djangoproject->python Interpreter下按照图示添加PyMySQL驱动;
点击查看详细pymysql安装及使用
如果使用Python 3需要修改项目目录下的__init__.py
文件并加入如下所示的代码,这段代码的作用是将PyMySQL视为MySQLdb来使用。(注意:项目目录下的__init__.py
文件,而非app目录下的__init__.py
文件)
import pymysql
pymysql.install_as_MySQLdb()
2.2 配置数据库
修改项目的settings.py文件,首先将我们之前创建的应用books添加已安装的项目中,然后配置MySQL作为持久化方案。
在配置ENGINE属性时,常用的可选值包括:
'django.db.backends.sqlite3'
:SQLite嵌入式数据库。'django.db.backends.postgresql'
:BSD许可证下发行的开源关系型数据库产品。'django.db.backends.mysql'
:转手多次目前属于甲骨文公司的经济高效的数据库产品。'django.db.backends.oracle'
:甲骨文公司的关系型数据库旗舰产品。
找到DTABASE,按照图示进行修改
NAME属性代表数据库的名称,如果使用SQLite它对应着一个文件,在这种情况下NAME的属性值应该是一个绝对路径;使用其他关系型数据库,则要配置对应的HOST(主机)、PORT(端口)、USER(用户名)、PASSWORD(口令)等属性。
2.3 根据模型自动生成关系数据库中的二维表
Django框架本身有自带的数据模型,我们稍后会用到这些模型,为此我们先做一次迁移操作。所谓迁移,就是根据模型自动生成关系数据库中的二维表,命令如下所示:
在local窗口输入命令:python manage.py migrate
结果如下:
找到app目录下的models.py
,并作内容修改
# Create your models here.
from django.db import models
class Dept(models.Model):
"""图书类"""
num = models.IntegerField(primary_key=True, db_column='dnum', verbose_name='图书编号')
name = models.CharField(max_length=20, db_column='dname', verbose_name='图书名称')
booktime = models.CharField(max_length=10, db_column='dtime', verbose_name='借阅时间')
class Meta:
db_table = 'tb_dept'
class Emp(models.Model):
"""学生类"""
no = models.IntegerField(primary_key=True, db_column='eno', verbose_name='学生编号')
name = models.CharField(max_length=20, db_column='ename', verbose_name='学生姓名')
class1 = models.CharField(max_length=10, verbose_name='班级')
# 多对一外键关联(自参照)
mgr = models.ForeignKey('self', on_delete=models.SET_NULL, null=True, blank=True, verbose_name='管理人员')
sal = models.DecimalField(max_digits=7, decimal_places=2, verbose_name='月薪')
comm = models.DecimalField(max_digits=7, decimal_places=2, null=True, blank=True, verbose_name='补贴')
# 多对一外键关联(参照部门模型)
dept = models.ForeignKey(Dept, db_column='dno', on_delete=models.PROTECT, verbose_name='所在学院')
class Meta:
db_table = 'tb_emp'
再次执行迁移操作,先通过模型生成迁移文件,再执行迁移创建二维表。
输入命令:python manage.py makemigrations books
再输入命令:python manage.py migrate
执行完数据模型迁移操作之后,可以在通过图形化的MySQL客户端工具查看到E-R图(实体关系图)。
三、利用Django后台管理模型
1、创建管理员账号
这里输入密码不会显示出来,两次密码输入一致即可创建成功。
2、启动Web服务器,登录后台管理系统。
输入命令: python manage.py runserver
访问http://127.0.0.1:8000/admin,会来到登录界面。
登录成功页面: