• 54 Django 模型层(1) 单表查询



    单表操作:

    一 项目的操作顺序:
    1 在model.py文件中创建表结构
    class Book(models.Model):
    id=models.AutoField(primary_key=True)
    title=models.CharField(max_length=32)
    price=models.DecimalField(max_digits=5,decimal_places=2)
    publish=models.CharField(max_length=32)
    pub_date=models.DateTimeField()

    2 连接数据库创建表
    (1)先创建数据库bms
    (2)配置
    DATABASES = {
    'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME':'bms',      # 要连接的数据库,连接前需要创建好
    'USER':'root',       # 连接数据库的用户名
    'PASSWORD':'',       # 连接数据库的密码
    'HOST':'127.0.0.1', # 连接主机,默认本级
    'PORT':3306     # 端口 默认3306
    }
    }
    DATABASES = {
    'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'bms',# 要连接的数据库,连接前需要创建好
    'USER': 'root',# 连接数据库的用户名
    'PASSWORD': '',# 连接数据库的密码
    'HOST': '127.0.0.1',  # 连接主机,默认本级
    'PORT':3306# 端口 默认3306
    },
        
     'app1': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'bms',# 要连接的数据库,连接前需要创建好
    'USER': 'root',# 连接数据库的用户名
    'PASSWORD': '',# 连接数据库的密码
    'HOST': '127.0.0.1',  # 连接主机,默认本级
    'PORT':3306# 端口 默认3306
    },
     'app2': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'bms',# 要连接的数据库,连接前需要创建好
    'USER': 'root',# 连接数据库的用户名
    'PASSWORD': '',# 连接数据库的密码
    'HOST': '127.0.0.1',  # 连接主机,默认本级
    'PORT':3306# 端口 默认3306
    }
    }
    不同app 可以配置不同的数据库
    
    
                        
    (3)数据库迁移

    python manage.py makemigrations
    python manage.py migrate

    KEY: Django在执行迁移命令时只会为settings中install_app中的应用中的models创建表结构

    3 启动项目: python manage.py runserver

    二 表记录操作

    (1) 添加记录
    # 方式1
    book=Book(title="",price="",publish="",pub_date="2012-12-12")
    book.save()
    # 方式2
    book=Book.objects.create(title="",price="",publish="",pub_date="2012-12-12")
    print(book.id)
    print(book.title)

    (2) 查询记录

    KEY:queryset数据类型

    Book.objects.all() # 返回queryset对象 [obj,obj2,obj3,...]
    Book.objects.all()first() # Book模型类对象
    Book.objects.all().last() # Book模型类对象
    Book.objects.filter(title="python") # 返回queryset对象 [obj,obj2,obj3,...]
    Book.objects.get(title="python") # Book模型类对象
    Book.objects.exclude(title="python") # 返回queryset对象 [obj,obj2,obj3,...]
    Book.objects.all().count() # 返回int
    Book.objects.all().order_by("-price")# 返回queryset对象
    Book.objects.all().order_by("-price").reverse() # 返回queryset对象
    Book.objects.all().exist() # 返回布尔值
    Book.objects.all().values("title") # 返回queryset对象 [{"title":""},{"title":""}]
    Book.objects.all().values_list("title","price") # 返回queryset对象 [("python",122),("linux",233)]
    Book.objects.all().values("price").distinct()

    模糊查询:
    Book.objects.filter(price__gt=100)
    Book.objects.filter(price__lt=100)
    Book.objects.filter(price__in=[100,200,300])
    Book.objects.filter(price__range=[100,200])
    Book.objects.filter(title__startswith="py")
    Book.objects.filter(title__contains="py")
    Book.objects.filter(title__icontains="py")
    Book.objects.filter(pub_date__year="2012")

    (3) 删除

    Book.objects.all().delete()
    Book.objects.get(id=1).delete()
    (4) 更新

    Book.objects.filter(id__gt=5).update(price=100)




    例子:
    1 查询老男孩出版社出版过的价格大于200的书籍
    Book.objects.filter(price__gt=200,publish="老男孩出版社")

    2 查询2017年8月出版的所有以py开头的书籍名称
    Book.objects.filter(title__startswith="py",pub_date__year=2017,pub_date__month=8).values("title")

    3 查询价格为50,100或者150的所有书籍名称及其出版社名称
    Book.objects.filter(price__in=[50,100,150]).values("title","publish")

    4 查询价格在100到200之间的所有书籍名称及其价格
    Book.objects.filter(price__range=[100,200]).values("title","price")

    5 查询所有人民出版社出版的书籍的价格(从高到低排序,去重)
    Book.objects.filter(publish="人民出版社").order_by("-price").values("price").distinct()

    单表查询连接数据库具体步骤:

    1.创建表,在app model.py文件中,创建

    2.数据库中,先创建好库,命名为bms

     3.配置settings

    4.确保配置文件中已经配置好了自己的应用

    5.app 应用中,__init__.py 文件中加上:

    import pymysql

    pymysql.install_as_MySQLdb()
    6.执行
    python manage.py makemigrations
    python manage.py migrate
    7.可能出现的问题和解决办法
  • 相关阅读:
    机器学习:以分析红酒口感为例说明交叉验证的套索模型
    机器学习:分类算法性能指标之ROC曲线
    机器学习:最小二乘法实际应用的一个完整例子
    机器学习:Python中如何使用支持向量机(SVM)算法
    机器学习:python中如何使用朴素贝叶斯算法
    机器学习:Python实现lms中的学习率的退火算法
    机器学习:Python实现最小均方算法(lms)
    @Autowired 与@Resource选择(治好你的强迫症)
    @Resource 进行注入bean的过程
    @Autowired 进行注入bean的过程
  • 原文地址:https://www.cnblogs.com/knighterrant/p/10209923.html
Copyright © 2020-2023  润新知