給你django項(xiàng)目中數(shù)據(jù)庫(kù)能用到的代碼!

django數(shù)據(jù)庫(kù)相關(guān)

from Mp
ps:下文為本人練手項(xiàng)目中總結(jié)的操作

在配置文件中配置MySQL數(shù)據(jù)庫(kù)

DATABASES = {
    'default':{
        'ENGINE': 'django.db.backends.mysql',
        'HOST': '主機(jī)',
        'PORT': 端口,
        'USER': '用戶名',
        'PASSWORD': '密碼',
        'NAME': '數(shù)據(jù)庫(kù)名稱'
    }
}

定義模型類

class 模型類(models.Model):
    屬性 = models.數(shù)據(jù)類型(選項(xiàng),verbose_name='admin的提示文本')
    ...
    class Meta:
    db_table = "表名"
    verbose_name = "在admin站中顯示的名字"

數(shù)據(jù)庫(kù)的增刪改查

增加
# save()法,例:
xixi = XiXi()
xixi .xtitle = "嘻嘻嘻"
xixi .xpub_date = date(2018,10,17)
book.save()

# create法(推薦使用),例:
XiXi.objects.create(
    xtitle ='啦啦啦',
    xpub_date =date(8012,1,1),
)
查詢

get(),aggregate(),order_by()立即返回?cái)?shù)據(jù)

all(),filter(),exclude()返回的是查詢集

all() 查詢多個(gè)結(jié)果,無(wú)條件查詢數(shù)據(jù)

XiXi.objects.all()

get() 查詢單一結(jié)果,如果不存在會(huì)拋出模型類.DoesNotExist異常,查詢到多個(gè)對(duì)象會(huì)拋異常

XiXi.objects.get(id=3)

filter() 過(guò)濾出多個(gè)結(jié)果,結(jié)果為列表,括號(hào)內(nèi)判定條件all(),exclude()都能用

XiXi.objects.filter(id=1)

exclude() 有條件的查詢,返回不滿足條件的數(shù)據(jù)

XiXi.objects.exclude(id=3)

查詢條件的語(yǔ)法: 屬性__運(yùn)算符=值

以下運(yùn)算符前面加上i,不區(qū)分大小寫

運(yùn)算符包括:

  • exact 相等
  • contains 包含
  • startwith,endwith 以..開(kāi)頭結(jié)尾
  • isnull 空查詢
  • in 是否包含在某個(gè)范圍內(nèi)
  • gt,gte 大于(greater than),大于等于(greater than equal)
  • lt,lte 小于(less than),小于等于(less than equal)
  • year,month,day,week_day... 日期查詢

F對(duì)象,用于屬性的比較

XiXi.objects.filter(xread__lte=F('xcomment'))

Q對(duì)象,用于條件的比較,實(shí)現(xiàn)邏輯與或非

XiXi.objects.filter(Q(xread__gt=20) | Q(pk__lt=3))

聚合函數(shù) (Avg 平均,Count 數(shù)量,Max 最大,Min 最小,Sum 求和)

XiXi.objects.aggregate(Sum('xread'))
aggregate的返回值是一個(gè)字典類型  {'屬性名__聚合類小寫':值}

order_by() 排序,括號(hào)內(nèi)字段加 - 號(hào)為降序

關(guān)聯(lián)查詢

由一到多 django根據(jù)外鍵,為一方對(duì)象創(chuàng)建了xxxx_set屬性,xxxx為多方類名小寫,可被一方對(duì)象調(diào)用,訪問(wèn)多方的屬性

有多到一 django根據(jù)外鍵,為多方對(duì)象創(chuàng)建了xxxx_id屬性,xxxx為外鍵名,被多方對(duì)象調(diào)用,訪問(wèn)一方屬性

修改

save() 適用于修改單個(gè)對(duì)象

  1. 查詢對(duì)象
  2. 修改屬性
  3. 對(duì)象.save()
xixi = XiXi.objects.get(hname='大頭')
xixi.xtitle= '咸魚'
hero.save()

update() 適用于修改多個(gè)對(duì)象

模型類.objects.filter(條件).update(屬性=值,...)

XiXi.objects.filter(xtitle='咸魚').update(xtitle='阿強(qiáng)')
刪除

模型類對(duì)象delete 適用于刪除單個(gè)對(duì)象

  1. 查詢對(duì)象
  2. 對(duì)象.delete()
xixi= XiXi.objects.get(id=13)
xixi.delete()

模型類.objects.filter().delete() 適用于刪除多個(gè)對(duì)象

XiXi.objects.filter(id=14).delete()
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容