最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Django框架中ORM系統(tǒng)實(shí)現(xiàn)對數(shù)據(jù)庫數(shù)據(jù)增刪改查

 更新時(shí)間:2021年09月04日 17:23:45   作者:孤寒者  
這篇文章主要介紹了使用Django的ORM實(shí)現(xiàn)對數(shù)據(jù)庫數(shù)據(jù)增刪改查方法,文中附含詳細(xì)示例代碼以及過程詳解,有需要的朋友可以借鑒參考下

1.數(shù)據(jù)的增刪改查----------增加數(shù)據(jù)

在視圖函數(shù)中導(dǎo)入U(xiǎn)ser模型類,然后使用下面的方法添加數(shù)據(jù):

from django.http import HttpResponse
from .models import User
# Create your views here.
def add_user(request):
    #方法一
    taka = User(name='taka',age=18)
    taka.save()
    #方法二
    xiaopo = User()
    xiaopo.name = 'xiaopo'
    xiaopo.age = 18
    xiaopo.save()
    #方法三
    aa = User.objects.get_or_create(name='xiaohong',age=18)  #插入前會(huì)進(jìn)行查找,如果沒有相同的數(shù)據(jù)就會(huì)添加;如果有就不會(huì)。
    print(aa)       #會(huì)返回一個(gè)元組,第一個(gè)數(shù)據(jù)是添加成功的實(shí)例;第二個(gè)數(shù)據(jù)是True或False。(添加成功為True;反之為False)
    # 此處打印結(jié)果:   (<User: name:xiaohong, age:18>, True)

    # 插入前會(huì)進(jìn)行查找,如果沒有相同的數(shù)據(jù)就會(huì)添加;如果有就不會(huì)。   因?yàn)樯厦娌迦肓讼嗤瑪?shù)據(jù),所以此處不會(huì)插入數(shù)據(jù)。
    User.objects.get_or_create(name='xiaohong',age=18)  
    return HttpResponse("插入數(shù)據(jù)成功!")

實(shí)現(xiàn)效果:
(注意:分配一下路由,要訪問到此視圖才會(huì)執(zhí)行?。?/p>

在這里插入圖片描述

在這里插入圖片描述

2.數(shù)據(jù)的增刪改查----------查找數(shù)據(jù)

這時(shí)在定義模型類時(shí)定義的__str__()方法的作用就表現(xiàn)了出來

控制查詢的數(shù)據(jù)顯示的格式(即顯示模型的簡單表示)

from django.db import models
# Create your models here.
class User(models.Model):
    id = models.AutoField(primary_key=True)       #主鍵可以省略,Django默認(rèn)會(huì)為我們加上一個(gè)名為id的主鍵,寫的話就可以改主鍵的名字!
    name = models.CharField(max_length=50)        # CharField——字符串
    age = models.IntegerField()                   # IntegerField——整數(shù)
    def __str__(self):
        """
        返回模型的字符串表示
        我們告訴Django,默認(rèn)應(yīng)使用哪個(gè)屬性來顯示有關(guān)此模型的信息
        Django調(diào)用方法__str__()來顯示模型的簡單表示
        """
        return "name:%s, age:%s" %(self.name,self.age)

進(jìn)行查詢:

User模型類導(dǎo)入

from django.http import HttpResponse
from .models import User
def search_user(request):
    #查詢所有記錄對象
    rs1 = User.objects.all()
    print("這是所有記錄對象:",rs1)			#通過觀察,可以發(fā)現(xiàn)查詢到的記錄對象的輸出方式就是模型中的__str__的格式.
    # 同時(shí)這個(gè)查詢結(jié)果rs1是個(gè)queryset對象,是一個(gè)類似于列表的對象。具備列表里的一些常用方法,比如:切片[0:3],下標(biāo)取值rs1[1]...但是下標(biāo)取值的話不支持反向取值。
    #查詢一個(gè)記錄對象
    rs2 = User.objects.get(name="xiaopo")  # 此方法查詢,如果不存在/存在多條都會(huì)報(bào)錯(cuò)!  所以一般通過id值。
    print("這是一個(gè)記錄對象:",rs2)
    #查詢滿足條件的對象
    rs3 = User.objects.filter(name='xiaoming')  # 取不到則為空;多條的話都可以取到
    print("這是滿足條件的對象:",rs3)
    return HttpResponse("查詢數(shù)據(jù)成功!")

注意:
1.all()和filter()方法返回的是QuerySet對象,查詢不到則為空(但咋樣都不會(huì)報(bào)錯(cuò),就很牛?。?。
2.get()方式返回的單個(gè)對象,如果符合條件的對象有多個(gè),則get報(bào)錯(cuò)!而且如果查詢不到也會(huì)報(bào)錯(cuò)!

實(shí)現(xiàn)效果:

在這里插入圖片描述

在這里插入圖片描述

3.拓展——關(guān)于QuerySet簡單整兩句:

從數(shù)據(jù)庫中查詢出來的結(jié)果一般是一個(gè)集合,這個(gè)集合叫做 QuerySet(是一個(gè)類似于列表的對象,具備列表里的一些常用方法,比如:切片[0:3],下標(biāo)取值rs1[1]…但是下標(biāo)取值的話不支持反向取值).QuerySet是可迭代對象.QuerySet支持切片, 不支持負(fù)索引.可以用list強(qiáng)行將QuerySet變成列表.

3.數(shù)據(jù)的增刪改查----------刪除數(shù)據(jù)

from django.http import HttpResponse
from .models import User
def delete_user(request):
    #實(shí)例和QuerySet對象都具備刪除方法!    
    User.objects.get(id=1).delete()				#get方法得到的是單個(gè)對象(一個(gè)實(shí)例對象),所以是刪除一條數(shù)據(jù)!    
    User.objects.filter(age=18).delete()		#刪除所有age屬性值為18的數(shù)據(jù)!    
    User.objects.all().delete()					#刪除所有數(shù)據(jù)!    
    s = User.objects.filter(age=18)
    s[1].delete()								#刪除age值為18的數(shù)據(jù)中指定的一條    
    return HttpResponse("刪除數(shù)據(jù)成功!")

4.數(shù)據(jù)的增刪改查----------修改數(shù)據(jù)

from django.http import HttpResponse
from .models import User
def update_user(request):
    #第一種方法:先查找到數(shù)據(jù),然后再進(jìn)行屬性賦值修改(對于實(shí)例的修改)
    rs = User.objects.get(name="xiaoming")		#修改name屬性值為xiaoming的name屬性值為xiaowang(因?yàn)槭褂昧薵et方法所以僅修改第一條?。?
    rs.name='xiaowang'
    rs.save()    
    #第二種方法:使用update方法直接修改(對于集合的修改,只能用于QuerySet對象)
    User.objects.filter(name='xiaowang').update(name='AAA')	#修改所有name屬性值為xiaowang的name屬性值為AAA!    
    User.objects.all().update(age=22)			#修改所有數(shù)據(jù)的age屬性值為22!    
    return HttpResponse("修改數(shù)據(jù)成功!")

以上就是使用Django的ORM實(shí)現(xiàn)對數(shù)據(jù)庫數(shù)據(jù)增刪改查方法的詳細(xì)內(nèi)容,更多關(guān)于Django中實(shí)現(xiàn)ORM對數(shù)據(jù)庫操作的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python實(shí)現(xiàn)在多維數(shù)組中挑選符合條件的全部元素

    python實(shí)現(xiàn)在多維數(shù)組中挑選符合條件的全部元素

    今天小編就為大家分享一篇python實(shí)現(xiàn)在多維數(shù)組中挑選符合條件的全部元素,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • Python編程之屬性和方法實(shí)例詳解

    Python編程之屬性和方法實(shí)例詳解

    這篇文章主要介紹了Python編程之屬性和方法,以實(shí)例形式較為詳細(xì)的分析了Python中屬性與方法的功能、特點(diǎn)與使用技巧,需要的朋友可以參考下
    2015-05-05
  • 輕量級(jí)的Web框架Flask 中模塊化應(yīng)用的實(shí)現(xiàn)

    輕量級(jí)的Web框架Flask 中模塊化應(yīng)用的實(shí)現(xiàn)

    說到flask的模塊化,大家可能第一時(shí)間想到的都是藍(lán)圖,今天我們不討論藍(lán)圖,先從0.2版本中的Module類的實(shí)現(xiàn)講起
    2017-09-09
  • python入門之語句(if語句、while語句、for語句)

    python入門之語句(if語句、while語句、for語句)

    這篇文章主要介紹了python入門之語句,主要包括if語句、while語句、for語句的使用,需要的朋友可以參考下
    2015-01-01
  • 輕松計(jì)算員工工資:Python工資單計(jì)算器

    輕松計(jì)算員工工資:Python工資單計(jì)算器

    本文介紹了一個(gè)基于Python的工資單計(jì)算器,幫助雇主輕松計(jì)算員工的工資。通過輸入員工的基本信息和工作時(shí)長,計(jì)算器可以自動(dòng)計(jì)算出工資,并考慮加班、扣款等因素,提供準(zhǔn)確的工資單。需要的朋友可以參考下
    2023-09-09
  • Python實(shí)現(xiàn)的計(jì)算馬氏距離算法示例

    Python實(shí)現(xiàn)的計(jì)算馬氏距離算法示例

    這篇文章主要介紹了Python實(shí)現(xiàn)的計(jì)算馬氏距離算法,簡單說明了馬氏距離算法原理,并結(jié)合實(shí)例形式分析了Python實(shí)現(xiàn)與使用馬氏距離算法的相關(guān)操作技巧,需要的朋友可以參考下
    2018-04-04
  • Python基礎(chǔ)篇之字符串方法總結(jié)

    Python基礎(chǔ)篇之字符串方法總結(jié)

    Python提供了豐富的字符串處理方法,可以方便地對字符串進(jìn)行操作、處理和轉(zhuǎn)換。在本文中,我們將介紹Python中常用的字符串方法,需要的可以參考一下
    2023-04-04
  • python中g(shù)lobal與nonlocal比較

    python中g(shù)lobal與nonlocal比較

    這篇文章主要介紹了python中g(shù)lobal與nonlocal比較,global關(guān)鍵字用來在函數(shù)或其他局部作用域中使用全局變量,nonlocal關(guān)鍵字用來在函數(shù)或其他作用域中使用外層(非全局)變量,需要的朋友可以參考下
    2014-11-11
  • Windows 下更改 jupyterlab 默認(rèn)啟動(dòng)位置的教程詳解

    Windows 下更改 jupyterlab 默認(rèn)啟動(dòng)位置的教程詳解

    這篇文章主要介紹了Windows 下更改 jupyterlab 默認(rèn)啟動(dòng)位置,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • Python多進(jìn)程multiprocessing用法實(shí)例分析

    Python多進(jìn)程multiprocessing用法實(shí)例分析

    這篇文章主要介紹了Python多進(jìn)程multiprocessing用法,結(jié)合實(shí)例形式分析了Python多線程的概念以及進(jìn)程的創(chuàng)建、守護(hù)進(jìn)程、終止、退出進(jìn)程、進(jìn)程間消息傳遞等相關(guān)操作技巧,需要的朋友可以參考下
    2017-08-08

最新評論

夹江县| 岑巩县| 凤凰县| 新宾| 班戈县| 含山县| 利川市| 保靖县| 临邑县| 梁河县| 满城县| 九龙城区| 德昌县| 长汀县| 息烽县| 和硕县| 汝阳县| 泸水县| 平舆县| 乌兰察布市| 河西区| 临漳县| 岫岩| 靖江市| 双流县| 曲沃县| 临朐县| 平凉市| 定远县| 隆安县| 老河口市| 运城市| 武义县| 九台市| 建昌县| 镇坪县| 沈阳市| 乌拉特后旗| 潼南县| 洛宁县| 峨边|