django如何连接数据库mysql,django查询数据库操作
为了在Django项目中操作数据库,需要先与数据库建立连接,这样程序中的数据才能与数据库关联起来进行数据的添加、删除和检查。通过pymysql模块完成与数据库的交互过程。
Django项目默认使用mysqldb模块与mysql数据库进行交互,但是mysqldb模块对于python3.4版或以上版本并不完美,所以我们不得不使用替代方案。
数据查询
要从数据库中检索数据,必须首先获得一个*查询集* * (queryset),它表示从数据库中获得的对象的集合。它可以有零个、一个或多个过滤器。返回查询集的方法称为filter,根据给定的参数缩小查询结果的范围,相当于sql语句中的where或limit。
在管理器上调用filter方法将返回查询集,
查询集被一个过滤器过滤,然后返回到一个新的查询集,所以可以写成链式过滤。
惰性执行:创建查询集不会带来任何数据库访问,在调用数据之前不会访问数据库。
评估以下查询集:迭代、切片、序列化,结合if、repr()/print()/len()/list()/bool()。
返回查询集
全部()
#获取所有数据,对应SQL: select * fromuser
user . objects . all()filter(* * kwargs)返回QuerySet包含与给定搜索参数匹配的新查询集。
#等效SQL: select * fromuser
User.objects.filter()
#等效SQL:select * from user warename= admin
user . objects . filter(uname= admin )
# level SQL:select * from muserweruid 1 and type=2
User.objects.filter(uid__gt=1,type=2)
# chain call,相当于user.objects.filter (uid _ _ gt=1,type=2)
User.objects.filter(uid__gt=1)。过滤器(类型=2)排除(**kwargs)
#不匹配,对应SQL:select * from muserherename!=管理
user . objects . exclude(name= admin )order _ by(*字段)
参数字段名称,可以有多个字段名称。默认为升序。
如果要按某个字段降序排序,请在字段名前添加-:-uid ,以表示按uid降序排序。
#按uid升序排序等效于orderbyuid
User.objects()。order_by(uid )
# descending by uid等效于orderbyuiddesc。
User.objects.order_by(-uid )
#多列排序等效于orderbypassword,uiddesc
User.objects.order_by(密码,-uid )返回单个值
下列方法后面不能跟其他筛选方法,因为它们不返回查询集。
Get()只匹配一段数据。
U=User.objects.get(pk=1)#正常
U=用户。objects . get(uid _ _ gt=20)# Multipleobjectsreturned匹配多个数据。
u=user . objects . get(uid _ _ lt=-1)# does不存在无法匹配第一个()和最后一个()
User.objects.all()。first()#返回结果集中的第一个数据。
User.objects.all()。last()#返回结果集中的最后一个数据计数()。
返回结果集中的记录数,相当于select count(*)不返回整个结果集,比len方法更有效。
User.objects.count()存在()
判断查询集中是否有记录,如果有,返回True,否则返回False。
User.objects.filter(uid=3)。存在()查询集限制
查询类似于列表,可以用下标来限制,类似于sql语句中的limit子句。但指数不能为负。
指数
切片
User.objects.all()[0]#相当于:limit0,1
User.objects.all()[2]#相当于:limit2,1
User.objects.all () [033602] #相当于limit2
User.objects.all () [33602] #相当于limit2
user . objects . all()[:2]
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。