day02 數(shù)據(jù)庫的curd操作

  • 準備:
    先將創(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('修改')
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市设凹,隨后出現(xiàn)的幾起案子舰讹,更是在濱河造成了極大的恐慌,老刑警劉巖闪朱,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件月匣,死亡現(xiàn)場離奇詭異钻洒,居然都是意外死亡,警方通過查閱死者的電腦和手機桶错,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進店門航唆,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人院刁,你說我怎么就攤上這事糯钙。” “怎么了退腥?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵任岸,是天一觀的道長。 經(jīng)常有香客問我狡刘,道長享潜,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任嗅蔬,我火速辦了婚禮剑按,結果婚禮上,老公的妹妹穿的比我還像新娘澜术。我一直安慰自己艺蝴,他們只是感情好,可當我...
    茶點故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布鸟废。 她就那樣靜靜地躺著猜敢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪盒延。 梳的紋絲不亂的頭發(fā)上缩擂,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天,我揣著相機與錄音添寺,去河邊找鬼胯盯。 笑死,一個胖子當著我的面吹牛畦贸,可吹牛的內(nèi)容都是我干的陨闹。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼薄坏,長吁一口氣:“原來是場噩夢啊……” “哼趋厉!你這毒婦竟也來了?” 一聲冷哼從身側響起胶坠,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤君账,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后沈善,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體乡数,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡椭蹄,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了净赴。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绳矩。...
    茶點故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖玖翅,靈堂內(nèi)的尸體忽然破棺而出翼馆,到底是詐尸還是另有隱情,我是刑警寧澤金度,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布应媚,位于F島的核電站,受9級特大地震影響猜极,放射性物質發(fā)生泄漏中姜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一跟伏、第九天 我趴在偏房一處隱蔽的房頂上張望丢胚。 院中可真熱鬧,春花似錦受扳、人聲如沸嗜桌。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至浮定,卻和暖如春相满,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背桦卒。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工立美, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人方灾。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓建蹄,卻偏偏與公主長得像,于是被迫代替她去往敵國和親裕偿。 傳聞我的和親對象是個殘疾皇子洞慎,可洞房花燭夜當晚...
    茶點故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容