zoukankan      html  css  js  c++  java
  • Django 06 Django模型基础1(ORM简介、数据库连接配置、模型的创建与映射、数据的增删改查)

    Django 06 Django模型基础1(ORM简介、数据库连接配置、模型的创建与映射、数据的增删改查)

    一、ORM系统

    #django模型映射关系
    
    #模型类-----数据表
    #类属性-----表字段名
    
    #1、模型类必须写在app下的models.py文件中
    #2、模型如果需要映射到数据库,所在的app必须被安装
    #3、一个数据表对于一个模型 类,表中的字段对于模型中的类属性

    二、数据库的链接配置和模型类的创建及映射

    #数据库的配置

    #
    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 } }
    #pymysql数据库连接器的配置
    
    #2、在虚拟环境中安装pymysql
    pip install pymysql
    
    #3、设置连接器为pymysql,在主目录下的_init_.py文件下添加下面两句
    import pymysql
    pymysql.install_as_MySQLdb()
    #使用django中的模型
    
    #4、在app(music)下面的models.py中创建django的模型类
    from django.db import models
    
    class User(models.Model): #必须继承这个基类
        id = models.AutoField(primary_key=True)  #Autofield 表示自增长 ,这句话可以省略不写,id会默认帮我们创建
        name = models.CharField(max_length=30)  #CharField 表示字符串类型
        age = models.IntegerField()  #IntegerField 表示数字类型
    #将模型类映射到数据库
    
    #5、首先执行以下命令,要创建映射文件
    python  manage.py   makemigrations  #命令后面可以跟app名称,表示指定对某个app的模型进行映射,没写所有的app都执行;
                          #在执行前,必须保证我们创建模型的app必须是注册过的(INSTALLED_APPS)
    #6、执行以下命令,将映射文件中的映射数据提交到数据库中 python manage.py migrate
    #如果想要删除某个表,在models.py里面讲这个表删除,然后重复上面两条命令即可

    二、增删改查数据

      增

    #在视图函数view.py里面写入
    from django.shortcuts import render
    from django.http import HttpResponse
    
    from .models import User #由于下面的操作都是操作模型类,所有导入User类
    
    def add_user1(request): #添加数据方法一
        taka = User(name='taka',age=18)
        taka.save() #刷入数据库
        return HttpResponse('添加user成功')
    
    def add_user2(request):#添加数据方法二
        xiaopo = User()
        xiaopo.name = 'xiaopo'
        xiaopo.age = 28
        xiaopo.save()
        return HttpResponse('添加user成功')
    
    def add_user3(request): #添加数据方法三
        User.objects.create(name='budong',age=19) #不需要save,直接刷入数据库
        return HttpResponse('添加user成功')
    
    def add_user4(request): #添加数据方法四
        User.objects.get_or_create(name='which',age=20)
        return HttpResponse('添加user成功')
    #在同app下的urls.py里面写入
    from django.urls import path
    from . import views
    
    urlpatterns = [
        path('add1/',views.add_user1),
        path('add2/',views.add_user2),
        path('add3/',views.add_user3),
        path('add4/',views.add_user4),
    ]

      查

    #查找数据
    def search_user(request):
        rs = User.objects.all() #查询所有数据,返回的queryset类型,可以用rs[0:2]来查询
        rs1 = User.objects.get(id=1) #查找id为1的数据,只能用唯一键来操作,返回单个对象,如果是多个对象就会报错
        rs2 = User.objects.filter(name='budong') #使用filter过滤的方法,返回queryset类型
        print(rs2)
        return HttpResponse('查找数据成功')
        path('search/',views.search_user),
    #数据库相关的接口(QuerySet API)
    
    #1、从数据库中查询出来的结果一般是一个集合,这个集合叫做QuerySet
    #2、QuerySet是可迭代对象
    #3、QuerySet支持切片,不知处负索引
    #4、可以用list强行将QuerySet变成列表

      改

    #修改数据
    def update_user1(request):
        '''
        需要先查找到对象,然后在对属性进行重新赋值
        '''
        taka = User.objects.get(name='taka')
        taka.name = 'TAKA' #将taka修改为TAKA
        taka.save()
        return HttpResponse('更新数据成功')
    
    def update_user2(request):
        User.objects.filter(id=2).update(name='tuple') #先查找,在修改
        return HttpResponse('更新数据成功')
    
    def update_user3(request):
        User.objects.all().update(age=28) #这是直接修改整列
        return HttpResponse('更新数据成功')
        path('update1/',views.update_user1),
        path('update2/',views.update_user2),
        path('update3/',views.update_user3),

      删

    #删除数据
    def delete_user(request):
        User.objects.get(id=3).delete() #查找id为3的数据,然后删除
        rs = User.objects.all().delete() #查找所有数据,然后delete
        User.objects.filter(name='budong').delete() #指定字段名,然后delete
        print(dir(rs)) #查询方法
        return HttpResponse('删除数据成功')
        path('delete/',views.delete_user),

  • 相关阅读:
    C#初级知识点整理及VS的简单使用
    C#更新SQLServer中的TimeStamp字段(时间戳) 防止同时修改一行时覆盖更新
    多线程传入参数
    ASP.NET 下载文件并继续执行JS解决方法
    C# webBrowser控件使用
    模拟操作网页 webBrowser
    ASP.net绑定文本框Enter事件到按钮 ASP.NET执行后台执行JS方法
    C#复制、粘贴文本信息到剪贴板
    组合数获取算法
    XML序列化与反序列化
  • 原文地址:https://www.cnblogs.com/xuchengcheng1215/p/9367203.html
Copyright © 2011-2022 走看看