- 準備:
先將創(chuàng)建項目,參照day01的創(chuàng)建day02項目
配置day02的init.py文件、setting.py文件和添加app項目
對數(shù)據(jù)的curd操作
首先創(chuàng)建一個數(shù)據(jù)庫表耘擂,了解其中一些數(shù)據(jù)類型
Charfield狈涮、IntergerField扛禽、BooleanField、DateTimeField等
創(chuàng)建一個數(shù)據(jù)表(在app的models中)
from datetime import datetime
from django.db import models
# Create your models here.
class Student(models.Model):
s_name = models.CharField(max_length=10, unique=True, verbose_name='姓名')
s_age = models.IntegerField(default=16, verbose_name='年齡')
s_sex = models.BooleanField(default=1, verbose_name='性別')
# 創(chuàng)建時間
create_time = models.DateTimeField(auto_now_add=True, verbose_name='創(chuàng)建時間')
# 操作時間(對數(shù)據(jù)進行操作時的時間)
operate_time = models.DateTimeField(auto_now=True, verbose_name='修改時間')
# def __init__(self, name, age=None, sex=None):
# super().__init__()
# self.s_name = name
# self.s_age = age if age else self.s_age
# self.s_sex = sex if sex else self.s_sex
# self.create_time = datetime.now()
# self.operate_time = datetime.now()
class Meta:
db_table = 'student'
1.create創(chuàng)建數(shù)據(jù)表
首先在urls.py的urlpaterns中添加 url('create_stu/', views.create_stu),
然后在views.py中創(chuàng)建對應的函數(shù)
from django.http import HttpResponse
from django.shortcuts import render
from app.models import Student
def create_stu(request):
# 創(chuàng)建學生信息
# 引入ORM概念:對象關系映射
# 第一種方式
# Student.objects.create(s_name='xxx')
# 第二種方法
stu = Student()
stu.s_name = 'xm'
stu.save()
#第三種
# stu = Student('sm', 18, 1)
# stu.save()
return HttpResponse('創(chuàng)建學生方法')
注:第三種創(chuàng)建方法要使用admin.py中的init()的來創(chuàng)建對象用押,所以在使用時要添加對應的構造函數(shù)
2.select 查詢數(shù)據(jù)庫
首先在urls.py的urlpaterns中添加 url('select_stu', views.select_stu),
然后在views.py中創(chuàng)建對應的函數(shù)
def select_stu(request):
"""
all: 查詢所有
filter: 獲取的結果為queryset,可以返回空,一條或多條數(shù)據(jù)靶剑。
get: 獲取的結果時object對象蜻拨,如果獲取不成功,會報錯桩引;如果獲取多條數(shù)據(jù)缎讼,也會報錯。
exclude: 不包含
order_by(): 排序
"""
# 查詢數(shù)據(jù)
# all()獲取全部
# select * from student;
stus = Student.objects.all()
# filter()條件查詢,存在就返回對應值坑匠,不存在就返回空
# select * from student where s_name='sm'
stus = Student.objects.filter(s_name='sm')
stu_names = [stu.s_name for stu in stus]
print(stu_names)
# get():條件查詢血崭,只查詢一個,如果有多個就報錯
stus = Student.objects.get(s_age=18)
# 多條件查詢
# select * from student where s_name='sm' and s_age=16
stus = Student.objects.filter(s_age=16).filter(s_name='sm')
stus = Student.objects.filter(s_age=16, s_name='sm')
# 查詢不等于的
# select * from student where s_namg<>'sm'
stus = Student.objects.exclude(s_name='sm')
# 查詢并排序,升降
# select * from student order by id;
stus = Student.objects.all().order_by('id') # 升序
stus = Student.objects.all().order_by('-id') # 降序
# values()
# stus = Student.objects.all().values('id', 's_name', 's_age', 's_sex')
# return HttpResponse(stus)
# get(), first()
# stus = Student.objects.get(id=1)
stus = Student.objects.filter(id=1).first()
# last(), first()
stus = Student.objects.all().order_by('id').first() # 升序
stus = Student.objects.all().order_by('-id').last() # 降序
stus = Student.objects.all().order_by('id')[1] # 升序
# return HttpResponse(stus.id)
# 其它條件查詢
# select * from student where s_name like '%m%'
stus = Student.objects.filter(s_name__contains='m')
# select * from student where s_name like 'm%'
stus = Student.objects.filter(s_name__startswith='m')
# select * from student where s_name like '%m'
stus = Student.objects.filter(s_name__endswith='m')
# in
# select * from student where id in (1,2)
stus = Student.objects.filter(id__in=[1,2])
# gt,gte 大于厘灼,大于等于 lt,lte 小于夹纫,小于等于
stus = Student.objects.filter(s_age__lt=17)
# pk
stus = Student.objects.filter(id=1)
stus = Student.objects.filter(pk=1)
# Q(),查詢姓名叫‘xm’的 或者年齡等于18的
stus = Student.objects.filter(Q(s_name='xm') | Q(s_age=18))
# 與 &
stus = Student.objects.filter(Q(s_name='xm') & Q(s_age=18))
# 非 ~
stus = Student.objects.filter(~Q(s_name='xm') | Q(s_age=18))
# 獲取學生的姓名
stu_names = [(stu.s_name,stu.id) for stu in stus]
print(stu_names)
# print(stus)
return HttpResponse(stu_names)
3.delect 刪除數(shù)據(jù)
首先在urls.py的urlpaterns中添加 url('delete_stu', views.delete_stu),
然后再views中添加delect_stu函數(shù)
def delete_stu(request):
# 刪除
# 第一種方法
stu = Student.objects.get(pk=6)
stu.delete()
# 第二種方法
Student.objects.filter(id=2).first().delete()
return HttpResponse('刪除')
4.update 修改數(shù)據(jù)
首先在urls.py的urlpaterns中添加 url('update_stu', views.update_stu),
然后再views中添加update_stu函數(shù)
def update_stu(request):
# 更新
# 第一種
stu = Student.objects.get(pk=1)
stu.s_name = '3x'
stu.save()
# 第二種
Student.objects.filter(id=1).update(s_name='哈哈')
return HttpResponse('修改')