day42Django增删改查

本次操作是在pycharm上实现的。

一、创建项目

先进入pycharm虚拟环境,在控制台输入

django-admin startproject 项目名

二、创建app(app命名最好不要为apps)

python manage.py startapp app名

该命令是在blog工程下创建一个app,进入虚拟环境后,先下载pymsql模块,在setting.py 里DATABASES配置数据库(名字,用户名,密码,host,port等),在INSTALLED_APPS列表后面加上创建app的名字,例如:'app'.

在控制台输入python manage.py makemigrations和python manage.py migrate。成功后可以在MySQL查看关联的表。

在控制台输入python manage.py runserver 进入网址,在网址后面加/admin 可进入Django管理
在setting.py中DATABASES里添加数据库信息



数据库配置要全部大写

增删改查

在url.py里添加功能映射


在项目里_init_.py里写

import pymysql
pymysql.install_as_MySQLdb()

在models.py里创建表的列名和属性

all:所有
filter:获取的结果为queryset,可以返回空,
get
1、django的get方法是从数据库的取得一个匹配的结果,返回一个对象,如果记录不存在的话,它会报错。
2、如果你用django的get去取得关联表的数据的话,而关键表的数据如果多于1条的话也会报错。
filter
1、django的filter方法是从数据库的取得匹配的结果,返回一个对象列表,如果记录不存在的话,它会返回[]。
2、如果你用django的filter去取得关联表的数据的话,无论关联表有多少记录的都不会报错。

from django.http import HttpResponse
from django.db.models import Q
from app.models import Student

def select_stu(request):
 # select * from app_student;
    stus = Student.objects.all()
    # select * from xxx where s_name='小花'
    stus = Student.objects.filter(s_name='小花')
    # filter(): 查询年龄等于19的学生
    stus = Student.objects.filter(s_age=19)
    # get(): 查询年龄等于19的学生
    # stus = Student.objects.get(s_age=18)
    # 年龄等于19, 姓名等于小花
    stus = Student.objects.filter(s_age=19, s_name='小花')

    # # 排序按照id升序/降序 ---》asc/desc
    stus = Student.objects.all().order_by('id')
    stus = Student.objects.all().order_by('-id')
    # # 查询姓名不为小花的  exclude:不包含
    stus = Student.objects.exclude(s_name='小花')

    # values()
    stus=Student.objects.all().values('id','s_name','s_age')

    # 切片,[a:b],如果b超过下标,即从a开始一直取完
    # 如果a超过索引范围,则返回一个空列表[](不会报错)
    stus = Student.objects.all().order_by('-id')[10:]

    # 查询名字带花的信息select * from xxx where name like '%花%'
    stus = Student.objects.filter(s_name__contains='花')
    # 查询名字以花开头的信息select * from xxx where name like '花%'
    stus = Student.objects.filter(s_name__startswith='花')
    # 查询名字以花结尾的信息select * from xxx where name like '%花'
    stus = Student.objects.filter(s_name__endswith='花')

    # Q(),查询姓名叫小花的,或者年龄等于18的
    stus = Student.objects.filter(Q(s_name='小花') | Q(s_age=18))

    # 获取学生的姓名
    # for stu in stus:
    #     print(stus.s_name)
    # stu_names = [(stu.s_name,stu.id) for stu in stus]
    # print(stu_names)
    return HttpResponse(stus)

def create_stu(request):
    # 创建学生信息
    # 引入ORM概念:对象关系映射
    # 第一种方式
    Student.objects.create(s_name='卫宫')
    # 第二种
    stu=Student()
    stu.s_name='远斑'
    stu.save()
    # 第三种
    stu = Student('樱',18,1)
    stu.save()
    return HttpResponse('创建学生方法')

def delete_stu(request):
    # 删除
    # stu=Student.objects.get(pk=1)
    stu=Student.objects.filter(pk=1).first()
    stu.delete()
    return HttpResponse('删除')

def update_stu(request):
    # 更新
    # 第一种
    stu =Student.objects.get(id=1)
    stu.s_name="侍郎"
    stu.save()
    # 第二种
    Student.objects.filter(id=1).update(s_name='切嗣')
    return HttpResponse('修改')

你可能感兴趣的:(day42Django增删改查)