欢迎来到Joker的博客

人们快乐的程度,全看他们决心想怎样去快乐。

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()
    
posted @ 2019-10-22 01:15  小咸鱼的Python之路  阅读(110)  评论(0)    收藏  举报