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ì)象
- 查詢對(duì)象
- 修改屬性
- 對(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ì)象
- 查詢對(duì)象
- 對(duì)象.delete()
xixi= XiXi.objects.get(id=13)
xixi.delete()
模型類.objects.filter().delete() 適用于刪除多個(gè)對(duì)象
XiXi.objects.filter(id=14).delete()