Django之ORM相关操作
ORM
-
配置
''' 在settings中配置数据库的连接后,还需要在进行一步操作,因为Django默认使用mysqldb,但是该模块已经不存在,因此我们需要手动进行设置,使用pymysql代替 ''' import pymysql pymysql.install_as_MySQLdb() -
对象创建
from django.db import models # 创建一个User类,对应数据库中的user表 class User(models.Model): id = models.AutoField(primary_key=True) # 不写时,Django会默认创建 username = models.CharField(max_length=64) password = models.CharField(max_length=64) phone = models.BigIntegerField() -
根据类,在数据库中创建对应的表
python manage.py makemigrations # 仅仅生成一个记录,不会创建表 python manage.py migrate # 创建表 -
增删改查之增
# 直接进行创建 User.objects.create(username='joker',password='123') # 根据所给的参数进行查找,有结果,返回查找到的结果,没有,进行创建(返回一个元组:对象+是否创建) # defaults为我们要新创建对象的参数,字典格式 User.objects.get_or_create(self, defaults=None, **kwargs) # 通过所给的参数进行查找,有结果,使用defaults的值进行更新,没有,创建一个(返回元组:对象+是否创建) User.objects.update_or_create(self, defaults=None, **kwargs) -
增删改查之删
# 直接删除 User.objects.get(username=username).delete() User.objects.filter(username=username).delete() -
增删改查之改
# 直接修改 User.objects.get(username=username).update(pwd='456') -
增删改查之查
# 查找之get方法,只能返回一个值 User.objects.get(username=username) # 查找之filter方法,返回一个set对象 User.objects.filter(username=username) # 查找之exclude,不找符合条件的 User.objects.exclude(username=username) # 将参数中对象添加到查找结果中 User.objects.complex_filter(filter_obj) -
其他方法
# 聚合函数 aggregate(*args, **kwargs) # 返回的数据进行了聚合或用额外的数据进行了注释 annotate(*args, **kwargs) # 计数函数 count() # 查看结果中的第一个对象 first() # 查看结果中的最后一个元素 last() # 判断查找结果是否存在 exists() # 排序 oder_by(*field_name) # 去重 distinct(*field_name) # 使用额外的SQL去查询 extra(select=None, where=None, params=None, tables=None, order_by=None, select_params=None): # 反转查询到的结果 reverse()

浙公网安备 33010602011771号