zoukankan      html  css  js  c++  java
  • 10.24

    ORM:
    
    Python语法     sql
        
        类         表
        属性       字段
        对象       表记录
    
        
    一 如何创建表
    
    在models.py:
        class Food(models.Model):
              title=models.CharField(max_length=32)
    
    执行数据库迁移命令:
        1 Python manage.py makemigrations
        2 python manage.py migrate
        
    注意:必须在settings中的INSTALLED_APPS 注册models所在的app
    
    
    
    二 对于表记录增删改查
    
    
        class Book(models.Model):
            nid=models.AutoField(primary_key=True)
            title=models.CharField(max_length=32)
            price=models.DecimalField(max_digits=8,decimal_places=2) # 999999.99
            pub_date=models.DateTimeField()  # "2012-12-12"
            publish=models.CharField(max_length=32)
    
    
        1 添加记录
        
        # 方式1:
        book=Book(title="python",price=123,pub_date="2012-12-12",publish="人民出版社")
        book.save()
        
        # 方式2:
        book=Book.objects.create(title="python",price=123,pub_date="2012-12-12",publish="人民出版社")
        print(book.title)
        
        2 查询记录
        
        book_list=Book.objects.all() # [book1,book2,book3]
        book_list=Book.objects.filter(price=100) # [book1,book2,book3]
        
        
        3 删除记录
        
        Book.objects.filter(price=100).delete()
         
        4 修改记录
          Book.objects.filter(nid=edit_book_id).update(price=111)
          Book.objects.filter(price=111).update(publish="南京出版社")
        
    三 图书管理系统的请求流程给1汽车、kj
       (1)查看书籍:
       
           请求url :http://127.0.0.1:8000/books/
           请求方式:GET
           
           
           django的urls.py:
               path('books/', views.books,name="books"),
    
           执行books(request): 
              1 查询所有书籍  
              2 将查询的queryset数据传入模板,render渲染出一个books页面
              3 返回给浏览器
              
           用户此时可以看到书籍的查看页面
        
       (2) 添加书籍
       
           请求url :http://127.0.0.1:8000/books/add/
           请求方式:GET
           
           
           django的urls.py:
               path('books/add/', views.addbook),
    
           执行addbook(request): 
              if GET请求:
                   返回给浏览器一个提交书籍的表单页面
                   用户此时可以看到书籍的添加页面
               
             ################ 
           用户输入数据,点击提交
            
           请求url :http://127.0.0.1:8000/books/add/
           请求方式:POST
           
           
           django的urls.py:
               path('books/add/', views.addbook),
    
           执行addbook(request): 
              if GET请求:
                   返回给浏览器一个提交书籍的表单页面
                   用户此时可以看到书籍的添加页面
              else:
                   获取用户提交的数据,向数据库中添加一本书籍
                   返回一个重定向:/books/
                    
          ################ 
           浏览器接收到重定向的响应:再发请求        
            
           请求url :http://127.0.0.1:8000/books/
           请求方式:GET
           
           django的urls.py:
               path('books/', views.books,name="books"),
    
           执行books(request): 
              1 查询所有书籍 (此时查询的书籍包含刚刚添加的书籍) 
              2 将查询的queryset数据传入模板,render渲染出一个books页面
              3 返回给浏览器
              
           用户此时可以看到书籍的查看页面
                
        
       (3) 删除请求
           请求url :http://127.0.0.1:8000/books/delete/5
           请求方式:GET
           
           django的urls.py:
               re_path('books/delete/(d+)', views.delbook,name="books"),
    
           执行delbook(request,5): 
              1 查询主键为5的书籍删除
              2 返回一个重定向:/books/
                    
          ################ 
           浏览器接收到重定向的响应:再发请求        
            
           请求url :http://127.0.0.1:8000/books/
           请求方式:GET
           
           django的urls.py:
               path('books/', views.books,name="books"),
    
           执行books(request): 
              1 查询所有书籍 (此时查询的书籍没有刚刚删除的书籍) 
              2 将查询的queryset数据传入模板,render渲染出一个books页面
              3 返回给浏览器
              
           用户此时可以看到书籍的查看页面
              
           
    单表查询:
        查询API: 
        queryset
        
        (1) all() :  调用者:objects管理器  返回queryset
        (2) filter() :调用者:objects管理器  返回queryset
        (3) get方法():调用者:objects管理器  返回查询到model对象 (注意:查询结果有且只有一个才执行)
        (4) first(),last()方法:调用者:queryset   返回model对象
        (5) exclude():调用者:objects管理器  返回queryset
        (6) order_by():由queryset对象调用,返回值是queryset
        (7) count :数数  :由queryset对象调用 返回int
        (8) reverse():由queryset对象调用,返回值是queryset
        (9) exists(): 由queryset对象调用 返回值布尔值
        (10)values()方法: 由queryset对象调用,返回值是queryset
        (11)values_list():由queryset对象调用,返回值是queryset
        (12)distinct(): 由queryset对象调用,返回值是queryset
        
        
        模糊查询(双下划线)
            Book.objects.filter(price__in=[100,200,300])
            Book.objects.filter(price__gt=100)
            Book.objects.filter(price__lt=100)
            Book.objects.filter(price__range=[100,200])
            Book.objects.filter(title__contains="python")
            Book.objects.filter(title__icontains="python")
            Book.objects.filter(title__startswith="py")
            Book.objects.filter(pub_date__year=2012)
        
        
    https://www.cnblogs.com/yuanchenqi/articles/8963244.html    
    https://www.cnblogs.com/sss4/p/7070942.html orm一片不错的博客 链接
  • 相关阅读:
    普通索引和唯一索引的选择
    深入理解MySQL索引(上)
    深入理解MySQL索引(下)
    Python3爬取小说并保存到文件
    MySQL45讲:一条update语句是怎样执行的
    IO软件层次结构与假脱机技术
    一条查询SQl是怎样执行的
    MySQL45讲笔记-事务隔离级别,为什么你改了数据我看不见
    了解一下IO控制器与控制方式
    3.6类别不平衡问题
  • 原文地址:https://www.cnblogs.com/zzy7372/p/9845422.html
Copyright © 2011-2022 走看看