Django項(xiàng)目中表的查詢的操作
2022-09-29
shell操作:
我在使用中是pycharm與數(shù)據(jù)庫(kù)建立連接的一個(gè)工具。
使用的環(huán)境:
在此處是用在了虛擬環(huán)境中。
使用場(chǎng)景:
一般是在創(chuàng)建的表中插入數(shù)據(jù)后,進(jìn)行查看,可以代替在“視圖”中——“創(chuàng)建一個(gè)函數(shù)用于請(qǐng)求指定表中的內(nèi)容,在瀏覽器中返回”。
在插入表的過(guò)程中,有兩個(gè)新得知的內(nèi)容:
第一個(gè)是,插入語(yǔ)句中,“insert into book_bookinfo1 values()”,括號(hào)里面添加要插入的數(shù)據(jù),在插入數(shù)據(jù)時(shí),如果需要查看表的結(jié)構(gòu),可以使用語(yǔ)句“desc book_bookinfo1”查看各個(gè)字段的順序以及之前設(shè)置的類型要求。注意在“insert into”與“book_bookinfo1”中是不需要添加關(guān)鍵字“table”的。向數(shù)據(jù)庫(kù)中插入表的內(nèi)容時(shí),要選中“插入的表”,使用的語(yǔ)句時(shí)“use book_bookinfo1”(use 表名),在它們兩者之間也是不需要加“table”的。
第二個(gè)是,在此表中,設(shè)置了一個(gè)“Datetime”類型的字段,它插入數(shù)據(jù)的格式為“年-月-日 時(shí):分:秒”。
使用shell,進(jìn)入shell中的命令(在pycharm頁(yè)面下面的“終端”中):
python manage.py shell
進(jìn)入shell 后 ,查詢的實(shí)例:
首先,需要導(dǎo)入要查詢的表(例:)
from book.models import BookInfo
注意:在導(dǎo)入模塊中,此處要導(dǎo)入“BookInfo”函數(shù),從"book"中的“models”中導(dǎo)入,要具體到函數(shù)所在的".py"文件中。如果沒(méi)有詳細(xì)到具體文件中,只寫(xiě)了一個(gè)“book”的話,是會(huì)報(bào)錯(cuò)的,一個(gè)導(dǎo)入錯(cuò)誤(“ImportError”)。
查看表內(nèi)所有存儲(chǔ)的內(nèi)容:
BookInfo.objects.all()
注意:查詢“BookInfo1”表中的所有內(nèi)容,“object”要加上“s”,之前沒(méi)有加上“s”的時(shí)候,會(huì)出現(xiàn)一個(gè)“屬性錯(cuò)誤(AttributeError)”,后來(lái)加上了。
Django項(xiàng)目 ORM常用的十三種查詢方法
all():查詢所有的結(jié)果
示例:
publisher = models.Publisher.objects.all() ? ? ? ? #查詢所有的出版社信息
get():
publisher = models.Publisher.objects.get(id = 1) ? ?# get查詢數(shù)據(jù)不存在時(shí)會(huì)保錯(cuò)
filter():
publisher = models.Publisher.objects.filter(id = 1) #不存在的時(shí)候返回一個(gè)空的Queryset 不會(huì)報(bào)錯(cuò) publisher = models.Publisher.objects.filter(id = 1)[0] #就算查詢的結(jié)果只有一個(gè) 返回的也是一個(gè)Queryset 列表 ?要用索引的方式取出第一個(gè)元素
exclude():
publisher = models.Publisher.objects.exclude(id = 1) ? #排除掉id等于1的數(shù)據(jù)
values():
publisher = models.Publisher.objects.values("name","type") ? #返回一個(gè)Queryset對(duì)象 ?里面全是字典 ? 為空的話 ?默認(rèn)查出所有數(shù)據(jù)
values_list():
publisher = models.Publisher.objects.values_list("name") # ?返回一個(gè)Queryset對(duì)象 ?里面全是列表為空的話 ?默認(rèn)查出所有數(shù)據(jù)
order_by():
publisher = models.Publisher.objects.all().order_by("time") ? #根據(jù)xxx排序
reverse(): #反轉(zhuǎn)
publisher = models.Publisher.objects.all().order_by("time") .reverse() ?#只能對(duì)有序的Queryset ?進(jìn)行反轉(zhuǎn)
count(): 返回Queryset中對(duì)象的數(shù)量
publisher = models.Publisher.objects.all().count()
frist(): 返回Queryset中第一個(gè)對(duì)象
publisher = models.Publisher.objects.all().frist()
last():返回Queryset中最后一個(gè)對(duì)象
publisher = models.Publisher.objects.all().last()
exists(): 查詢表中是否有數(shù)據(jù) 有就返回True 沒(méi)有就是False
publisher = models.Publisher.objects.exists()
到此這篇關(guān)于Django項(xiàng)目中表的查詢的操作的文章就介紹到這了,更多相關(guān)Django查詢操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python通過(guò)getattr函數(shù)獲取對(duì)象的屬性值
這篇文章主要介紹了Python通過(guò)getattr函數(shù)獲取對(duì)象的屬性值,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-10-10python+django+selenium搭建簡(jiǎn)易自動(dòng)化測(cè)試
這篇文章主要介紹了python+django+selenium搭建簡(jiǎn)易自動(dòng)化測(cè)試,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08Python?pygame派生精靈和精靈組創(chuàng)建敵機(jī)
這篇文章主要為大家介紹了Python?pygame派生精靈和精靈組創(chuàng)建敵機(jī)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08淺談python中requests模塊導(dǎo)入的問(wèn)題
今天小編就為大家分享一篇淺談python中requests模塊導(dǎo)入的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-05-05使用Django清空數(shù)據(jù)庫(kù)并重新生成
這篇文章主要介紹了使用Django清空數(shù)據(jù)庫(kù)并重新生成,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-04-04圖文詳解牛頓迭代算法原理及Python實(shí)現(xiàn)
牛頓迭代法又稱為牛頓-拉夫遜(拉弗森)方法,它是牛頓在17世紀(jì)提出的一種在實(shí)數(shù)域和復(fù)數(shù)域上近似求解方程的方法。本文將利用圖文詳解牛頓迭代算法原理及實(shí)現(xiàn),需要的可以參考一下2022-08-08