Django——模型基础ORM 数据库连接配置 模型的创建与映射 数据的增删改查

时间:2018-12-26 15:39:33   收藏:0   阅读:218

Django

  1. Django的ORM简介
  2. 数据库连接配置
  3. 模型的创建与映射
  4. 数据库的增删改查
    1. 增数据
    2. 查数据及补充
    3. 改数据
    4. 删数据

 

 

Django的ORM系统分析

技术分享图片

  1. ORM概念:对象关系映射(Object Relational Mapping,简称ORM)
  2. ORM的优势:不用直接编写SQL代码,只需像操作对象一样从数据库操作数据。

Django的模型映射关系

技术分享图片

 


 

 

数据库的配置

 在项目的settings文件中的DATABASES

注意:NAME是数据库的库名,在使用之前,需要先在数据库中新建一个对应名字的database

DATABASES = {
    default: {
        ENGINE: django.db.backends.msyql,
        NAME: database_name,
        USER: username,
        PASSWORD: password,
        HOST: 127.0.0.1,
        PORT: 3306
    }
}

 

 

pymsql数据库连接器的配置

设置连接器为pymysql:
主目录下的的__init__.py文件添加下面两句

import pymysql
pymysql.install_as_MySQLdb()

 




使用Django中的模型

 首先,在哪个APP下创建模型,都要先在settings中注册APP

APP  my_sql下的models.py

from django.db import models


# Create your models here.
class User(models.Model):
    id = models.AutoField(primary_key=True) # id属性,不用添加Django也会自动添加
    name = models.CharField(max_length=10)
    age = models.IntegerField()

    def __str__(self):   # 定义输出方法,在查询的时候使用
        return User<id=%s, name=%s, age=%s>%(
            self.id, self.name, self.age
        )

 

 然后在创建映射文件:( 后面可以跟APP的名字,不跟则表示全部都映射)
python manage.py makemigrations [app_name]

将映射数据提交到数据库中:

python manage.py migrate [app_name]

 

 这是就会在数据库中看到自己创建的模型

技术分享图片

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


 

 

 数据库的增删改查

增:

 配置到url后,在视图views中:

from django.http import HttpResponse
from .models import User

def add(request):
    # # 方法一
    # user = User()
    # user.name = ‘张三‘
    # user.age = 22
    # user.save()
    # # 方法二
    # user = User(name=‘李四‘, age=23).save()
    # # 方法三
    # User.objects.create(name=‘王五‘, age=22)
    # 方法四
    User.objects.get_or_create(name=周六, age=24) # 这个方法不会重复添加

    return HttpResponse(添加数据成功)

 检查数据库:

技术分享图片

 

查:

views中:

查看全部数据

from django.http import HttpResponse
from .models import User

def get(request):
    # 获取全部数据
    result = User.objects.all()
    print(result)
    return HttpResponse(查询数据成功)

User.objects.all()——后台输出:

技术分享图片

查询一个数据:

def get(request):
    # 查村一个数据
    result = User.objects.get(id=1)
    print(result)

    return HttpResponse(查询数据成功)

 技术分享图片

查询满足条件的数据:

def get(request):
    # 查询满足条件的数据
    result = User.objects.filter(name=王五)
    print(result)

    return HttpResponse(查询数据成功)

 技术分享图片

注意:

补充:

获取一个属性的搜索数据:

def get(request):
    # 单独获取一个属性的全部数据
    result = User.objects.values(age)
    print(result)

    return HttpResponse(查询数据成功)

技术分享图片

去重:

def get(request):
    # 单独获取一个属性的全部数据,并去重
    result = User.objects.values(age).distinct()
    print(result)

    return HttpResponse(查询数据成功)

技术分享图片

 

 

改:

在操作之前,先在models中在添加一个city的属性,规定模型添加属性要加上默认值,不要忘记创建映射文件已经映射数据

from django.db import models


# Create your models here.
class User(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=10)
    age = models.IntegerField()
    city = models.CharField(max_length=20, default=北京)

    def __str__(self):
        return User<id=%s, name=%s, age=%s>%(
            self.id, self.name, self.age
        )

映射文件以后再查看数据库:

技术分享图片

views:

def update(request):
    # 先查找到数据在进行修改
    res = User.objects.get(name=张三)
    res.city = 武汉
    res.save()
    # 用update直接修改 # update针对的是QuerySet类型的数据
    User.objects.filter(name=李四).update(city=重庆)
    return HttpResponse( 数据修改成功)

 技术分享图片

删:

所有的方法都是用与delete方法

def delete(request):
    result = User.objects.get(id=1)
    result.delete()

    User.objects.filter(name=周六).delete()
    return HttpResponse(删除数据成功)

 技术分享图片

 

评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!