本次操作是在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('修改')