django数据库操作

1.修改项目的 settings 配置,在 settings.py 中配置需要连接的数据库(DATABASES:是用来管理数据库配置,默认是sqlite3)

 

 2.在项目下的__init__.py中进行如下配置

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

3.实操

  3.1创建表

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

from django.db import models

class Student(models.Model):
    """
    创建如下几个表的字段
    """
    # 学号 primary_key=True: 该字段为主键
    student_num = models.CharField('学号', primary_key=True, max_length=15)
    # 姓名 字符串 最大长度20
    name = models.CharField('姓名', max_length=20)
    # 年龄 整数 null=False, 表示该字段不能为空
    age = models.IntegerField('年龄', null=False)
    # 性别 布尔类型 默认True: 男生 False:女生
    sex = models.BooleanField('性别', default=True)
    # 手机 unique=True 该字段唯一
    mobile = models.CharField('手机', unique=True, max_length=15)
    # 创建时间 auto_now_add:只有在新增的时候才会生效
    create_time = models.DateTimeField(auto_now_add=True)
    # 修改时间 auto_now: 添加和修改都会改变时间
    modify_time = models.DateTimeField(auto_now=True)

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

    终端执行如下命令,他的作用是将models文件生成一个迁移文件

python manage.py makemigrations

    迁移文件生成完毕,执行

python manage.py migrate

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

    此时,student表创建成功

  3.2 插入数据

    在app中创建一个.py文件(批量创建一些数据)

# coding:utf-8
"""
CreateBY : rongrong
Time : 2022/2/24 16:44
"""
from django.http import HttpResponse
from my_app.models import Student
import random
def insert(request):
    # 随机整数 作为学号
    for i in range(0, 5):
        student_num = int(random.uniform(0, 1) * 10000000000)
        # 从models文件中获取student对象
        student = Student()
        # 给对象赋值
        student.student_num = student_num
        student.name = 'tom' + str(i)
        student.age = 15
        student.sex = random.choice([True, False])
        student.mobile = int(random.uniform(0, 1) * 10000000000)
        # 插入数据
        student.save()
    return HttpResponse('数据插入完毕')

    在项目的urls.py 文件中 urlpatterns中配置对应的接口路径    

 

     访问http://127.0.0.1:8000/my_api/  ,接口请求成功

 

    student表数据插入成功

 

   3.3  查、改、删

# coding:utf-8
"""
CreateBY : rongrong
Time : 2022/2/24 16:44
"""
from django.http import HttpResponse
from my_app.models import Student
import random
"""
查询
"""
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.student_num, '姓名': i.name, '性别': i.sex}
        arr.append(content)
    print(arr)
    print(type(arr))
    return HttpResponse(arr)
"""
修改
"""
def modify(request,student_num):   # 接口访问失败
    # 通过学号获取student对象
    student = Student.objects.get(student_num=student_num)
    # 设置student的name为jack
    student.name = 'jack'
    student.save()
    return HttpResponse('修改成功.')

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

注:url动态传值时,需要使用re_path函数(或者url)

 4.已有数据库表反向生成对应的Model

    在控制台输入一下命令,则会打印数据库中所有表的model内容

python manage.py inspectdb

    将生成的Model数据直接写入文件中

python manage.py inspectdb > my_app\double    # >后面跟文件路径

    将某一表数据Model数据追加至文件最后

python manage.py inspectdb --database default student >> my_app double

    关联多个数据库时,指定库生成Model文件

python manage.py inspectdb --database=sit > saas\readme

 

 

posted @ 2022-02-24 16:37  *球球*  阅读(174)  评论(0编辑  收藏  举报