django mysql api_Django的API操作mysql中常用的语句
【背景】
增/刪/改/查 如何操作數據庫
導入數據庫的模型In?[23]:?from?blog.models?import?People
【增加記錄】--三種方法
方法一: 直接使用數據模對象的create函數
In [24]: People.objects.create(name='shuaige')
Out[24]:
注意:創建成功返回對象地址
方法二:In?[6]:?record?=?People(name='choubaguai')
In?[7]:?record.save()
方法三:In?[9]:?record?=?People()
In?[10]:?record.name?='andy'
In?[11]:?record.save()
【刪除記錄】--找對對象,使用delete() 進行刪除
第一找出你要刪除的對象集合(id大于2的)In?[19]:?r_d?=?People.objects.filter(id__gt?=2)
使用delete對象將其刪除In?[20]:?r_d.delete()
Out[20]:?(3,?{'blog.People':?3})
將返回珊瑚的條目數
【改記錄】-先找出來,在將對象屬性重新賦值
(將id=1的名字改成andyliu)In?[21]:?People.objects.values_list()
Out[21]:?[(1,?'liudehua'),?(2,?'zhangxueyou')]
In?[22]:?r_m?=?People.objects.get(id=1)
In?[23]:?r_m.name?=?'andyliu'
In?[24]:?r_m.save()
In?[25]:?People.objects.values_list()
Out[25]:?[(1,?'andyliu'),?(2,?'zhangxueyou')]
【查】 這就相當于mysql中sql語句中的select語句,其中有很多字語句進行限制查詢
1 獲取所有記錄對象
all_record = People.objects.all()
如果要獲取對象值,需要先取出某一個對象,然后取出對象中的屬性In?[32]:?for?record?in?all_record:
....:?????print(record.id)
....:?????print(record.name)
....:
1
andyliu
2
zhangxueyou
2 獲取某個域為指定值的對象In?[11]:?r_p?=?People.objects.get(name='zhangxueyou')
In?[12]:?r_p.id
Out[12]:?2
注意: 這個用法不常用,如果要用,你一定要保證,你查找的一定存在這樣的一個記錄,且必須是唯一,不然會報錯哦
3 類似mysql中where進行的條件查詢使用filter函數
第一: 整數的范圍比較查詢()
將id大于1的對象找出來,并以值列表的形式進行返回In?[15]:?People.objects.filter(id__gt=1).values_list()
Out[15]:?[(2,?'zhangxueyou'),?(6,?'andyliu')]
gt大于
gte大于等于
lt小于
lte小于等于
ne不等于
in(也可以是其他數據類型)位于給定列表中: People.objects.filter(id__in=[1, 3, 4]) 返回一個 polls 列表(ID 值分別是 1或3或4).In?[16]:?People.objects.filter(name__in=['andyliu','zhangxueyou'])
Out[16]:?[,?,?]
4 多過濾條件查詢,有一種方法是,多次使用filter函數即可In?[17]:?People.objects.filter(id__gt=1).filter(name='andyliu')
Out[17]:?[]
In?[18]:?People.objects.filter(id__gt=1).filter(name='andyliku')
Out[18]:?[]
5 查找到的對象數據(即符合條件的記錄的數目)
In [25]: People.objects.count()
Out[25]: 3
等于:
In [26]: People.objects.all().count()
Out[26]: 3
符合條件的長度In?[24]:?People.objects.filter(name='andyliu').count()
Out[24]:?2
6 order_by()函數,進行升序/降序
-負數表示要進行降序排序In?[14]:?p?=?People.objects.order_by('-id')
In?[15]:?for?i?in?p:
print(i.id)
....:
6
2
1
7 in listIn?[15]:
Person.objects.filter(id__in?=?[1,2]).values_list()
Out[15]:?[(1,
'name1',?22),?(2,?'name2',?22)]
8 not in list(這里沒有直接的not in list) 但是可以使用exclude,除外來等價In?[16]:
Person.objects.exclude(id__in?=?[1,2]).values_list()
Out[16]:?[(3,
'name3',?22),?(4,?'name3',?22)]
9. 包含關鍵字的(集合鏈式查詢)
表中的所有數據:In?[20]:?Person.objects.values_list()
Out[20]:?[(1,?'name1',?23),?(2,?'name2',?22),?(3,?'name3',?22),?(4,?'name3',?22)]
name這個field包含name的關鍵字的record記錄In?[21]:?Person.objects.filter(name__contains="name").values_list()
Out[21]:?[(1,?'name1',?23),?(2,?'name2',?22),?(3,?'name3',?22),?(4,?'name3',?22)]
name這個field包含name的關鍵字的record記錄并且年齡age字段不能等于23的! 使用鏈式查詢In?[23]:?Person.objects.filter(name__contains="name").exclude(age=23).values_list()
Out[23]:?[(2,?'name2',?22),?(3,?'name3',?22),?(4,?'name3',?22)]
以上需求用filter進行等價操作,取出22歲的In?[24]:?Person.objects.filter(name__contains="name").filter(age=22).values_list()
Out[24]:?[(2,?'name2',?22),?(3,?'name3',?22),?(4,?'name3',
10 對象索引,類似python 列表中的切片
In [29]: Person.objects.all()[1:3]
Out[29]: [, ]
In [30]: Person.objects.all()[1:3].values_list()
Out[30]: [(2, 'name2', 22), (3, 'name3', 22)]
但是不知持負索引(會報錯),如
Person.objects.all()[-1]
取代的方法:使用reverse方法來解決
11. 哈哈接下來可能是關于時間的查詢(待續)
總結
以上是生活随笔為你收集整理的django mysql api_Django的API操作mysql中常用的语句的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 校长亲笔推荐:a10内存,让学生畅快学习
- 下一篇: redis key存在则删除_Redis