查:
select* from UserInfo ;
models.UserInfo.objects.all()
select user from UserInfo ;
models.UserInfo.objects.all().values('user') #只取user列
select user,id from UserInfo;
models.UserInfo.objects.all().values_list('id','user') #取出id和user列,并生成一个列表
使用get:
select* from UserInfo where id =’1’;
models.UserInfo.objects.get(id=1) #取出id为1的数据
select * from UserInfo where user=’yang’;
models.UserInfo.objects.get(user=‘yang’)#取出user=‘yang’的数据
使用filter:
models.UserInfo.objects.filter(id=1)
models.UserInfo.objects.filter (user=‘yang’)
get和filter方法的区别
get方法是从数据库的取得一个匹配的结果,返回的是一个记录对象,如果记录不存在的话,它会报错。
如果你用django的get去取得关联表的数据的话,而关联表的数据如果多于2条的话也会报错
filter方法是从数据库的取得匹配的结果,返回一个对象列表QuerySet对象,如果记录不存在的话,它会返回[]
输入参数
get 的参数只能是model中定义的那些字段,只支持严格匹配
filter 的参数可以是字段,也可以是扩展的where查询关键字,如in,like等
返回值
get 返回值是一个定义的model对象
filter 返回值是一个新的,然后可以对QuerySet在进行查询返回新
QuerySet对象,支持链式操作
QuerySet一个集合对象,可使用迭代或者遍历,切片等,但是不等于list类型(使用一定要注意)
异常
get 只有一条记录返回的时候才正常,也就说明get的查询字段必须是主键或者唯一约束的字段。当返回多条记录或者是没有找到记录的时候都会抛出异常
filter 有没有匹配的记录都可以
fileter()详情:
增:
insertinto UserInfo(user,pwd) values(‘yang’,’123456’);
models.UserInfo.objects.create(user=‘yang’,pwd='123456')
或者
obj = models.UserInfo(user=‘yang’,pwd='123456')
obj.save()
或者
dic = {'user':’yang’,'pwd':'123456'}
models.UserInfo.objects.create(**dic)
删:
delete from UserInfo where user=’yang’;
models.UserInfo.objects.filter(user=‘yang’).delete()
改:
updateUserInfo set pwd=’520 where user=yang”;
models.UserInfo.objects.filter(user=‘yang’).update(pwd='520')
或者
obj =models.UserInfo.objects.get(user=‘yang’)
obj.pwd = '520'
obj.save()
来源:CSDN
作者:holmehai
链接:https://blog.csdn.net/holmehai/article/details/80387081