zoukankan      html  css  js  c++  java
  • Django学习笔记之model篇(一)

    数据库的配置:

    1.在settings.py中配置DATABASES

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',               # 数据库引擎
            'NAME': 'mydb',                                                      #数据库名称
            'USER': 'admin',                                                      # 链接数据库的用户名
            'PASSWORD': 'Root110qwe',                                # 链接数据库的密码
            'HOST': '127.0.0.1',                                                # mysql服务器的域名和ip地址
            'PORT': '3306',                                                        # mysql的一个端口号,默认是3306
        }
    }

    2.pymsql数据库连接器的配置:
    在虚拟环境中安装pymysql: pip install pymysql
    设置连接器为pymysql:在主目录下的的init.py文件添加下面两句

    import pymysql
    pymysql.install_as_MySQLdb()

    3.使用django中的模型:

    # blog/models.py
    from django.db import models
    # Create your models here.
    
    class User(models.Model):
        id = models.AutoField(primary_key=True)
        name = models.CharField(max_length=30)
        age = models.IntegerField()
    
        # 这个__str__方法的作用我们将在查询时看到的样式
        def __str__(self):
            return 'User<id=%s,name=%s,age=%s>'%(
                self.id,self.name,self.age)

    将模型类映射到数据库:

    1.首先执行以下命令,要创建映射文件

    # 在执行前,保证我们创建模型的APP是已经注册过的APP
    python  manage.py   makemigrations blog

    2.执行以下命令,将映射文件中的映射数据提交到数据库中

    python  manage.py   migrate blog

    打开数据我们能看到创建的以app名_模型名的数据表,而其他的一些表格是django自动生成的.
    注意:如果要删除表,那么可以去django模型中注释掉模型类,然后执行映射的命令,不要手动在命令行里面去删除.

    数据的增删改查

    1.增加数据

    在视图函数中导入User模型类,然后使用下面的方法添加数据

    from .models import User
    
    def add_user(request):
        # F1
        xps = User(name='xps',age=18)
        xps.save()
        # F2
        xps2 = User()
        xps2.name='xps2'
        xps2.age=17
        xps2.save()
        # F3
        User.objects.create(name='xps3',age=19) # 这种方法不用save了
        # F4
        User.objects.get_or_create(name='xps4',age=20) # 存在则不添加,不存在则添加
        return HttpResponse("插入数据成功")

    2.查找数据

    在视图函数中导入User模型类,实现简单的查找

    from .models import User
    
    def search_user(request):
        rs = User.objects.all() # 返回的是 QuerySet类型的
        rs = User.objects.get(id=2) # get()方式返回的单个对象,如果符合条件的对象有多个,则get报错!
    
        rs = User.objects.first() # 只能有一条,不能查有多个相同值的数据,不然会报错
        rs = User.objects.filter(name='xps')  # 返回的是QuerySet类型
        rs = User.objects.exclude(name='xps2') # 除了...
        rs = User.objects.last() # 最后一个值
        rs = User.objects.order_by('age') # 以...进行排序
        rs = User.objects.order_by('-age') # 以...进行排序(逆向)
        rs = User.objects.order_by('age','id') # 以...进行排序(多个值)
        rs = User.objects.all().values()  # 变换成字典类型输出
        rs = User.objects.count()  # 查询到的数据的个数
    
        ###### 查询对象的条件
        # exact 相当于等于号:
        rs = User.objects.filter(name__exact='xiaoming')
        # iexact:跟exact,只是忽略大小写的匹配。
        # contains 包含:
        rs = User.objects.filter(name__contains='xiao')
        # icontains 跟contains,唯一不同是忽略大小写。
    
        # startwith 以什么开始:
        rs = User.objects.filter(name__startswith='xiao')
        # istartswith:同startswith,忽略大小写。
    
        # endswith:同startswith,以什么结尾。
        # iendswith:同istartswith,以什么结尾,忽略大小写。
    
        # in 成员所属:
        rs = User.objects.filter(age__in=[18, 19, 20])
    
        # gt 大于:
        rs = User.objects.filter(age__gt=20)
        # gte 大于等于:
        rs = User.objects.filter(age__gte=20)
        # lt 小于:
        rs = User.objects.filter(age__lt=20)
        # lte 小于等于:
        rs = User.objects.filter(age__lte=20)
        # range 区间:
        rs = User.objects.filter(age__range=(18, 20))
    
        # isnull 判断是否为空:
        rs = User.objects.filter(country__isnull=True)
    
        # 切片:
        rs = User.objects.all()[:2]
        # 注意: 不能使用负数作为切片。
    
        # print(rs[0])   #QuerySet类型可以索引取值
        # print(list(rs[2:4])) # 可以切片
        print(rs)
        return HttpResponse('查询数据成功')
    
    # QuerySet对象类型
    """
    1.支持索引
    2.支持切片,不支持负索引
    3.可迭代对象
    4.可通过list进行强行转换
    """

    3.修改数据

    在视图函数中导入User模型类,然后使用下面的方法更新数据

    # blog/views.py
    def update_user(request):
        # F1 先查找到对象,对属性重新赋值
        xps = User.objects.get(name='xps')
        xps.name = "XPS"
        xps.save()
        # F2
        User.objects.filter(id=2).update(name='xxx') # 这种方法不用save了
        User.objects.all().update(age=10)
        return HttpResponse('更新数据成功')

    4.删除数据

    def delete_user(request):
        # User.objects.get(id=4).delete()
        rs = User.objects.all()
        print(dir(rs)) # 可以查看有没有这个属性
        User.objects.filter(name='xps3').delete()
    
        return HttpResponse('删除数据成功')
  • 相关阅读:
    我见过的最完善的log4net配置
    根据身份证号中的日期判断某人是否已满18岁及是否已满60岁
    第三届“百越杯”福建省高校网络空间安全大赛
    PHP-上传文件
    PHP-操作Mysql
    PHP-异常处理
    PHP-错误处理
    Python(算法)-时间复杂度和空间复杂度
    Python-集合
    Python-字典
  • 原文地址:https://www.cnblogs.com/shuai06/p/12397512.html
Copyright © 2011-2022 走看看