Django模型基础第一节:实现一张表基本的增删改查

1-Django的ORM系统的分析:

orm系统的方法–通过封装 python代码----执行sql语句—操作数据库
1-什么是orm系统:
1.ORM概念:对象关系映射(Object Relational Mapping,简称ORM)
2.ORM的优势:不用直接编写SQL代码,只需像操作对象一样从数据库操作数据。
2-django模型映射关系:
模型类 ------ 数据表
类属性------表字段名

注意:

  1. 模型类必须都写在app下的models.py文件中。
  2. 模型如果需要映射到数据库,所在的app必须被安装.
  3. 一个数据表对应一个模型类,表中的字段,对应模型中的类属性

数据库的配置:

1.在settings.py中配置DATABASES

DATABASES = {
'default': {
        'ENGINE': 'django.db.backends.mysql',               # 数据库引擎
        'NAME': 'tab',                                                     #数据库名称
        'USER': 'root',                                                    # 链接数据库的用户名
        'PASSWORD': 'qwe123',                            # 链接数据库的密码
        '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()

在这里插入图片描述

使用django中的模型:

对应APP下的modle.py文件下 创建模型类

class Tab(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=20)
    age = models.IntegerField()
    sex = models.BooleanField(default=0)

        def __str__(self):
        return '姓名:%sname id:%s 年龄:%s 性别:%s'%(self.name,self.id,self.age,self.sex)


将模型类映射到数据库:
虚拟机下:
1.首先执行以下命令,要创建映射文件
python manage.py makemigrations
2.执行以下命令,将映射文件中的映射数据提交到数据库中
python manage.py migrate

或者直接在pycharm中创建映射文件:
在这里插入图片描述
在这里插入图片描述
将模型类映射到数据库:
在这里插入图片描述
在这里插入图片描述
注意:
打开数据我们能看到创建的以app名_模型名的数据表,而其他的一些表格是django自动生成的.
注意:如果要删除表,那么可以去django模型中注释掉模型类,然后执行映射的命令,不要手动在命令行里面去删除.

数据的增删改查----------增加数据

from django.http import HttpResponse
from .models import Tab
def test(request):
    #增加数据
    #方法一
    #t = Tab.objects.create(name='邓紫棋',age=18)
    # 方法二
    t = Tab.objects.get_or_create(name='周杰伦', age=28,sex=1)
    #方法三
    t = Tab()
    t.name='林俊杰'
    t.age=30
    t.sex=1
    t.save()
    #方法四
    t = Tab(name='五月天', age=32,sex=1)
    t.save()
    return HttpResponse(123)

在这里插入图片描述

数据的增删改查----------查找数据

#查找数据
    #查询所有
    t = Tab.objects.all()
    print(t)

    #查询单独对象
    t = Tab.objects.get(name='周杰伦')
    print(t)
    #查询满足条件的对象
    t = Tab.objects.filter(sex=1)
    print(t)
    return HttpResponse(123)

在这里插入图片描述
注意:
all()和filter()方法返回的是QuerySet对象.
get()方式返回的单个对象,如果符合条件的对象有多个,则get报错!

数据的增删改查--------数据库相关的接口(QuerySet API)

1.从数据库中查询出来的结果一般是一个集合,这个集合叫做 QuerySet.
2.QuerySet是可迭代对象.
3.QuerySet支持切片, 不支持负索引.
4.可以用list强行将QuerySet变成列表.

数据的增删改查----------修改数据

#修改数据
    #直接修改
    t = Tab.objects.filter(name='周杰伦').update(name='林宥嘉')
    print(t)
    #找到这个对象后 再修改
    t = Tab.objects.get(age=18)
    t.name = '王力宏'
    t.save()
    print(t)

    return HttpResponse(123)

在这里插入图片描述
在这里插入图片描述

数据的增删改查----------删除数据

#删除数据
    #删除单个对象
    # t = Tab.objects.get(id =1).delete()
    # print(t)
    # t = Tab.objects.filter(id=2).delete()
    # print(t)
    #删除所有
    t = Tab.objects.all().delete()
    print(t)

在这里插入图片描述
增删改查

from django.shortcuts import render

from django.http import HttpResponse
from .models import Tab
def test(request):
    '''#增加数据
    #方法一
    #t = Tab.objects.create(name='邓紫棋',age=18)
    # 方法二
    t = Tab.objects.get_or_create(name='周杰伦', age=28,sex=1)
    #方法三
    t = Tab()
    t.name='林俊杰'
    t.age=30
    t.sex=1
    t.save()
    #方法四
    t = Tab(name='五月天', age=32,sex=1)
    t.save()'''

    '''#查找数据
    #查询所有
    t = Tab.objects.all()
    print(t)

    #查询单独对象
    t = Tab.objects.get(name='周杰伦')
    print(t)
    #查询满足条件的对象
    t = Tab.objects.filter(sex=1)
    print(t)'''


    #修改数据
    #直接修改
    '''t = Tab.objects.filter(name='周杰伦').update(name='林宥嘉')
    print(t)
    #找到这个对象后 再修改
    t = Tab.objects.get(age=18)
    t.name = '王力宏'
    t.save()
    print(t)'''

    #删除数据
    #删除单个对象
    # t = Tab.objects.get(id =1).delete()
    # print(t)
    # t = Tab.objects.filter(id=2).delete()
    # print(t)
    #删除所有
    t = Tab.objects.all().delete()
    print(t)



    return HttpResponse(123)


猜你喜欢

转载自blog.csdn.net/qq_42662411/article/details/104553754
今日推荐