zoukankan      html  css  js  c++  java
  • Django day07 (二)单表操作

    单表操作  

      -mysql数据库:settings里配置:

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.sqlite3',
            'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
        }
        # 'default': {
        #     'ENGINE': 'django.db.backends.mysql',
        #     'NAME': 'day76',
        #     'HOST': '127.0.0.1',
        #     'PORT': 3306,
        #     'USER': 'root',
        #     'PASSWORD': 'nuanxin',
        # }
    }

      -在init文件中:

    import pymysql
    
    # 因为Django默认连接mysql数据库,用的是MySQLdb,python3.0以后不支持MySQLdb,需要用pymysql替换
    pymysql.install_as_MySQLdb()

      -在models中,写类,写类的属性

    from django.db import models
    
    
    # Create your models here.
    
    # 创建表与表的字段 Field来表明这些字段是什么类型
    class Book(models.Model):  # 类对应数据库的表
      # Auto自动递增 字段,对应数据库是一个列 id = models.AutoField(primary_key=True)
      # Char变量类型
    name = models.CharField(max_length=32)
      # Decimal生成的字段 digits最大长度的位数 place小数点后几位
    price = models.DecimalField(max_digits=5, decimal_places=2)
     # publish出版社 publish = models.CharField(max_length=32)
      # author作者 author = models.CharField(max_length=32)

      -数据库迁移

        python

      -新增表,删除表,新增字段,删除字段 ---> 执行数据库迁移的两条命令

        1.单表增:

          -两种方式

        2.单表修改:

          -先查询出来,然后update(queryset对象的方法)

          -对象要更新,用save方法

        3.单表删除:

          -先查询出来,然后delete(queryset对象和模型对象的方法)

          *****用queryset删除,修改的时候,一定要注意数据是几条

          -删除数据表中所有数据:Book.object.all().delete()单表查询

        4.单表查询(API):  

    <1> all():                  查询所有结果
      
    <2> filter(**kwargs):       它包含了与所给筛选条件相匹配的对象
      
    <3> get(**kwargs):          (有且只有一条数据) 返回与所给筛选条件相匹配的对象,返回结果有且只有一个,如果符合筛选条件的对象超过一个或者没有都会抛出错误。
      
    <4> exclude(**kwargs):      它包含了与所给筛选条件不匹配的对象
     
    <5> order_by(*field):       对查询结果排序('-id')
      
    <6> reverse():              对查询结果反向排序
      
    <8> count():                返回数据库中匹配查询(QuerySet)的对象数量。
      
    <9> first():                返回第一条记录
      
    <10> last():                返回最后一条记录
      
    <11> exists():              (查询一个结果是否有数据) 如果QuerySet包含数据,就返回True,否则返回False
     
    <12> values(*field):        (字典里面有name,有id) 返回一个ValueQuerySet——一个特殊的QuerySet,运行后得到的并不是一系列
                                model的实例化对象,而是一个可迭代的字典序列
    <13> values_list(*field):   它与values()非常相似,它返回的是一个元组序列,values返回的是一个字典序列
     
    <14> distinct():            从返回结果中剔除重复纪录

      -单表基于双下划綫模糊查询 

    Book.objects.filter(price__in=[100,200,300])
    Book.objects.filter(price__gt=100)
    Book.objects.filter(price__lt=100)
    Book.objects.filter(price__gte=100)
    Book.objects.filter(price__lte=100)
    Book.objects.filter(price__range=[100,200])
    Book.objects.filter(title__contains="python") --->% python %
    Book.objects.filter(title__endswith="py") --->%py
    Book.objects.filter(title__startswith="py") --->py%
    Book.objects.filter(title__icontains
    ="python") --->忽略大小写 Book.objects.filter(pub_date__year=2012,pub_date_month=12)

         

      

  • 相关阅读:
    centos 下PATH变量配置错误补救办法 Alex
    基于php模块方式安装LAMP和常见LAMP应用 Alex
    php配置 Alex
    php测试小代码 Alex
    PHP简介 Alex
    2.7.JavaScriptnull与undefined
    2.9.JavaScript内置对象
    2.8.JavaScript不同数据类型转换
    2.2.javascript变量作用域
    2.6.Javascript数值型
  • 原文地址:https://www.cnblogs.com/zedong/p/9949331.html
Copyright © 2011-2022 走看看