Django 学生信息增删改查

这篇博客详细介绍了如何在Django项目中配置并使用MySQL数据库,包括创建模型、修改settings、数据库迁移、实现增删改查操作,并提供了遇到问题的解决办法。通过实例展示了如何创建学生信息表模型,并提供了相关代码示例。
摘要由CSDN通过智能技术生成

Django

小技巧

int(random.uniform(0, 9) * 10000000000)
#0-9组成的11位随机数都是唯一的,不会重复

1.Django中的mysql配置

步骤

1.创建模型

2.修改settings里的数据库信息

3.创建student models

4.迁移数据库

5.在view里写增删改查

0.基本事项

django-admin startapp Student   #创建模型

在这里插入图片描述
在这里插入图片描述

记得把创建好的模型添加到setting里,注意区分大小写。


#更改settings里的数据库
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',# 数据库引擎
        'NAME': 'student',# 数据库名称
        'USER': 'root',
        'PASSWORD': '233mall156',
        'HOST': '127.0.0.1',# 数据库地址,本机 ip 地址 127.0.0.1
        'PORT': '3306',# 端口
    }
}

1.1安装pymysql

pip3 install pymysql  #这一步之前有下载过的就不用了

在最开始的项目包下的__init__.py中进行如下配置
在这里插入图片描述

setting中的配置默认为sqlite3数据库 当需要修改成MySql时
并且在setting.py的同级目录的__init__.py 加入如下配置
否则会报错: Error loading MySQLdb module.

import pymysql
pymysql.install_as_MySQLdb()

1.2 创建Student

先创建一个student的数据库
在这里插入图片描述

在app文件的models.py文件中创建Student(学生信息)

models.py:数据模块,用于数据库设计

from django.db import models
"""
创建学生信息表模型
"""
# Create your models here.
"""
 该类是用来生成数据库的 必须要继承models.Model
"""
class Student(models.Model):
    # 学号 primary_key=True: 该字段为主键
    id = models.CharField(primary_key=True, max_length=15)
    # 姓名 字符串 最大长度20 null=False, 表示该字段不能为空
    name = models.CharField(max_length=20, null=False)
    # 性别 布尔类型 默认True: 男生 False:女生
    sex = models.BooleanField('性别', default=True)
    # 身份证  unique=True 该字段唯一
    idCard = models.CharField(max_length=18, null=False, unique=True)
    specialized = models.CharField(max_length=24)
    academy = models.CharField(max_length=64)

    # 指定表名 不指定默认APP名字——类名(app_demo_Student)
    class Meta:
        db_table = 'student'

在利用models.py文件生成数据库表之前,我们需要手动的先创建数据库

1.3迁移数据库

创建完django_msql库之后,我们在终端执行如下命令,他的作用是将models文件生成一个迁移文件

python manage.py makemigrations    

在这里插入图片描述

这是成功的样子,只要有0001就是成功的。没有0002也是成功的

将迁移文件的内容作用到数据库中,生成表或者修改字段属性

python manage.py migrate

在这里插入图片描述

这样表示成功。

1.4增删改查

把下面这串代码放入views里,
在这里插入图片描述

注意,代码里的Student是models里的Student
在这里插入图片描述

如果这里的类名不是Student,那下面的代码也要对应的修改。

from random import random

from django.http import HttpResponse
import random

# Create your views here.
from Student.models import Student


def insert(request):
    # 随机整数 作为学号
    for i in range(0, 5):
        studentNum = int(random.uniform(0, 1) * 10000000000)
        # 从models文件中获取student对象
        student = Student()
        # 给对象赋值
        student.id = studentNum
        student.name = 'tom' + str(i)
        student.idCard = int(random.uniform(0, 9) * 10000000000)
        student.sex = random.choice([True, False])
        student.specialized = '软件工程'
        student.academy='信息学院'
        # 插入数据
        student.save()

    return HttpResponse('数据插入完毕')

"""
查询
"""
def find(request):
    #sql = 'select * from student'
    # django 也可以执行原生的sql语句
    #result = Student.objects.raw(sql)

    # 查询name = tom1的数据
    result = Student.objects.filter(name='tom1')
    """
    result为<class 'django.db.models.query.QuerySet'>的对象
    需要进行数据处理
    """
    arr = []
    for i in result:
        content = {'学号': i.id, '姓名': i.name, '性别': i.sex}
        arr.append(content)
    print(arr)
    print(type(arr))
    return HttpResponse(arr)

"""
修改
"""
def modify(request, id):
    # 通过学号获取student对象
    student = Student.objects.get(id=id)
    # 设置student的name为jack
    student.name = 'jack'
    student.save()
    return HttpResponse('修改成功.')

"""
删除
"""
def delete(request, id):
    student = Student.objects.get(id=id)
    student.delete()
    return HttpResponse('删除成功.')

1.5修改url

在这里插入图片描述

 url(r'^insert/', views.insert),  # http://localhost:8000/insert/
    url(r'^find/', views.find),  # http://localhost:8000/find/
    # http://localhost:8000/modify/学号
    url(r'^modify/(?P<id>\d+)', views.modify),
    # http://localhost:8000/delete/学号
    url(r'^delete/(?P<id>.+)', views.delete),

报错

1·No migrations to apply.

解决办法

[(22条消息) Django 连接数据库创建表时未创建成功,提示No migrations to apply原因出现和解决_土渣渣的博客-CSDN博客_django没有migrations]

2·运行结果如下图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-GPn38SYM-1666093174500)(C:\Users\大海\AppData\Roaming\Typora\typora-user-images\image-20221018190511955.png)]

解决办法

添加一句“ runserver ”

在这里插入图片描述

参考
https://blog.csdn.net/weixin_43499626/article/details/84351572

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值