- 先在Mysql中建立好一个数据库:
CREATE DATABASE `school` CHARACTER SET utf8 ;
- 然后在项目的setting.py文件中修改数据库配置(注意数据库名称对应):
DATABASES = {
"default": {
"ENGINE": "django.db.backends.mysql",
"NAME": "school",
"USER": "root",
"PASSWORD": "password",
"HOST": "127.0.0.1",
"PORT": 3306,
}
}
- 修改__init__文件(注意是项目的而不是app应用的):
import pymysql
pymysql.install_as_MySQLdb()
到此为止Django连接Mysql的配置就完成了,接下来的需要做的就是建立app并编写model了,详见(Django初始化命令笔记_molihuacha2333的博客-CSDN博客。model直接决定数据库的数据,如下:
from django.db import models
# Create your models here.
"""
该类是用来生成数据库的 必须要继承models.Model
"""
class Student(models.Model):
"""
创建如下几个表的字段
"""
# 学号 primary_key=True: 该字段为主键
studentNum = models.CharField('学号', primary_key=True, max_length=15)
# 姓名 字符串 最大长度20
name = models.CharField('姓名', max_length=20)
# 年龄 整数 null=False, 表示该字段不能为空
age = models.IntegerField('年龄', null=False)
# 创建时间 auto_now_add:只有在新增的时候才会生效
createTime = models.DateTimeField(auto_now_add=True)
# 修改时间 auto_now: 添加和修改都会改变时间
modifyTime = models.DateTimeField(auto_now=True)
# 指定表名 不指定默认APP名字——类名(app_demo_Student)
class Meta:
db_table = 'student'
# 增加 __str__() 方法以返回对象细节
def __str__(self):
return self.name
然后依次在终端使用以下命令迁移数据(即根据model中定义的数据在数据库中建立一个表):
# 生成迁移文件
python manage.py makemigrations
# 执行迁移操作
python manage.py migrate
此时就可以看到在Mysql数据库school中生成了一个名为student的表:
我们现在在终端对数据库进行操作,首先在终端进入交互式python命令行(shell模式):
py manage.py shell
然后就可以在命令行模式中对数据库进行交互式操作了。首先来导入model里的Student包:
In [1]: from App_MysqlDeployment.models import Student
查看Student实例,可以看到现在什么实例也没有:
In [2]: Student.objects.all()
Out[2]: <QuerySet []>
不要紧,现在让我们来实例化一个看看:
In [3]: s = Student(studentNum="2220171130",name="茉莉花茶",age=23)
In [4]: s.save()
In [5]: s.studentNum
Out[5]: '2220171130'
现在可以在数据库中看到我们刚刚输入的信息了:
再试试查看Student实例的命令,就可以看到刚刚实例化的学生信息了,和Mysql数据库一样:
In [6]: Student.objects.all()
Out[6]: <QuerySet [<Student: 茉莉花茶>]>
再从数据库手动导入两个学生信息:
INSERT INTO `school`.`student` (`studentNum`, `name`, `age`, `createTime`, `modifyTime`) VALUES ('2220171131', '大耳朵图图', '22', '2022-11-20 08:17:08.140559', '2022-11-20 08:17:08.140559');
INSERT INTO `school`.`student` (`studentNum`, `name`, `age`, `createTime`, `modifyTime`) VALUES ('2220171132', '哈士奇', '22', '2022-11-20 08:17:08.140559', '2022-11-20 08:17:08.140559');
再来看看Studen的实例,可以发现在数据库中已经有三条学生信息了:
In [7]: Student.objects.all()
Out[7]: <QuerySet [<Student: 茉莉花茶>, <Student: 大耳朵图图>, <Student: 哈士奇>]>
参考:
[1] 手把手教你使用Django如何连接Mysql - 腾讯云开发者社区-腾讯云 (tencent.com)
[2] (120条消息) Django操作MySql详细教程_Python3X的博客-CSDN博客
[3] 编写你的第一个 Django 应用,第 2 部分 | Django 文档 | Django (djangoproject.com)