1.增加数据
调用该路由执行ModelsCaozuo的处理方法
第一种实例化类
class ModelsCaozuo(View): ''' 数据库增加数据 ''' def get(self, request): article = Article() article.title = "怎样添加一条表的数据,它拥有多个字段" article.content = "实例化model,通过.attr赋值" article.message = "使用django的save持久化数据" article.save() return HttpResponse("%s<br>%s<br>%s" % (article.title, article.content, article.message))
第二种不实例化
class ModelsCaozuo1(View): ''' 数据库增加数据 ''' def get(self, request): Article( title="添加数据不实例化,直接使用类", content="66666666666", message = "同样通过django的save持久化数据" ).save() return HttpResponse("%s<br>%s<br>%s" % (Article.title, Article.content, Article.message)) # 取不到数据?
第三种新增数据
class ModelCaozuo2(View): def get(self, request): Article.objects.create(title="大标题", content=datetime.now(), message='666') return HttpResponse('ojbk')
2.查询数据
Article.object.all() ; Article.object.get() ; Article.object.filter() ;Article.object.exclude()
查询Article表中所有数据 Article.object.all()
ps: 返回多条数据(Article的实例的集合, for in)
class ModelsCaozuo2(View): ''' 查询Article表数据的常用方法''' def get(self, request): content_all = Article.objects.all() # 可以切片 content_all[::] 不能使用负值切片 print content_all # QuerySet实例 列表 可 for in # <QuerySet [<Article: Article object>,
<Article: Article object>]
print content_all.values() # 返回字典形式的数据 ps:必须是QuerySet集合 [{'id':1,'name':'xiaoming'},{'id':2, 'name': 'xiaodong'}]
print content_all.count() # 数据条数
Article.object.latest('id') # latest根据字段id先进行排序,返回最后一条数据
Article.object.earliest('id') # earliest根据字段先排序,返回最久远的数据
Article.object.first() # 获取,默认排序的第一条数据。可根据order_by排序
Article.object.last() # 最后一条数据
# exact, iexact
Article.object.filter(id=1) # 查询id=1的数据
Article.object.filter(id__exact=1) # 等同上
Article.object.filter(id__iexact=1) # 等同上 但是忽略大小写
# contains, icontains
Article.object.filter(content__contains="a") # 字段content下,数据内容包含 “a”的所有数据
Artocle.object.filter(content__icontains="a") # 不包含“a”的数据
# in
Article.object,filter(id__in=[1,2,3]) # 判断字段id的值是否在列表中,是则获取出来
# gt大于, gte大于等于, lt小于, lte小于等于, startwith, istartwith忽略大小写, endwhith, iendwith忽略大小写
# range:区间查询
start_date = datetime.date(2005, 1, 1)
end_date = datetime.date(2018, 1, 1)
Artucle.objects.filter(make_time__range=(start_date, end_date))
# null
Article.object.filter(age__null=True) # age字段为空的所有数据
return render(request, 'mysql_select.html', locals())
mysql_select.html 页面获取属性
<body> {% for con in content_all %} 每一条表中数据对应一个Article类的实例con {{ con.title }}<br> {{ con.content }}<br> {{ con.message }}<br> {% endfor %} </body>
查询Article表中单条数据 Article.object.get()
ps 只返回一条数据(所以只是返回单个Article实例),如果数据有多条或者没有 会报错
class ModelsCaozuo3(View): ''' 查询表的数据 ''' def get(self, request): data1 = Article.objects.get(pk=1) # pk 通过主键查询 data2 = Article.objects.get(id=1) # id 通过id查询 一般id字段设置为主键
data3 = Article.object.exclude(id=1) # 过滤符合条件的数据,获取其它数据
data4 = Article.object.all().order_by('-id') # 通过id排序,"-"代表倒序
return render(request, 'mysql_select1.html', locals())
3.批量和单条删除数据
ps:没有查到数据 不会报错
class ModelsCaozuo4(View): ''' 批量和单条删除表数据 ''' def get(self, request): Article.objects.filter(n=2).delete() # 删除Article中所有 字段n=2的数据 Article.objects.filter(id=11).delete() # 删除Article 字段id=11的单条数据 return HttpResponse('ojbk')
4.修改数据
class ModelsCaozuo5(View): ''' 批量和单条修改数据 ''' def get(self, request): # 批量 把字段n=3的所有数据 的字段n,message改值 Article.objects.filter(n=3).update(n=4,message="把n从3改成4了") # 单条 先get单条Article数据的实例 和批量删除格式不同 article = Article.objects.get(pk=6) # get如果有多条数据或者无数据 则报错,只返回一条数据 article.n = 3 article.save() # 记得save return HttpResponse('ojbk')