Python Day73django ORM模型

python的类名--------------->SQL语句的表名
python的类属性--------------->SQL语句的表名下的字段
python的类属性的约束--------------->SQL语句的表名下的字段类型
类的实例对象--------------->表中的一条记录

一、创建表(建立模型

1、创建类(创建表)

  在应用的models.py文件中创建类,如下例:

from django.db import models
class Student(models.Model):                                           #必须继承models.Model类
    sid=models.AutoField(primary_key=True)                             #主键且自增
    name=models.CharField(max_length=11)                               #字符串类型,且最大字符数为11
    birth=models.DateField()                                           #日期类型,如:Y-m-d

  然后在terminal执行如下两条命令后,会自动执行models.py文件,将定义的类生成对应的表:

python manage.py makemigrations
python manage.py migrate

  如果我们需要在已经建好的表中增加字段,那么我们只需要在对应的类中增加字段,然后重新执行上述两条命令即可,但是需要强调的是,增加的字段必须设置默认值,否则执行命令时会成功。设置默认值是为了保证之前已经插入的数据行的新增字段有值。如下例:

from django.db import models
class Student(models.Model):
    sid=models.AutoField(primary_key=True)
    name=models.CharField(max_length=11)
    birth=models.DateField()
    age=models.IntegerField( default=3)                                 #整数类型,为后来新增字段,需要设置默认值

二、添加数据

  models文件只负责定义类(创建表),表数据的增删改查是在views视图函数中执行,如下添加数据实例:

from app01.models import Student
def add(request):
    if request.method=="POST":
        stu_name=request.POST.get("name")
        stu_birth=request.POST.get("birth")
        stu_age=request.POST.get("age")
        #方式一:
        s=Student(name=stu_name,birth=stu_birth,age=stu_age)
        s.save()                                                                                   #保存数据到数据库
        #方式二:
        Student.objects.create(name=stu_name,birth=stu_birth,age=stu_age)
        return redirect("/index/")
    return render(request,"add.html")

  上述实例需要注意一点:虽然models.py文件和views.py文件在同一应用目录下,但是在上述引用模块时不能写成from models import Student,因为执行我们项目的文件是manage.py文件,并不与应用app01下的文件在同一级目录,而是与app01文件同级,所以根本找不到对应的模块。

  表数据的增删改查操作,其实会被翻译成相应的sql语句,在setting文件中进行如下设置,即可在进行数据操作时在屏幕打印相应的sql语句:

LOGGING = {
    ‘version‘: 1,
    ‘disable_existing_loggers‘: False,
    ‘handlers‘: {
        ‘console‘:{
            ‘level‘:‘DEBUG‘,
            ‘class‘:‘logging.StreamHandler‘,
        },
    },
    ‘loggers‘: {
        ‘django.db.backends‘: {
            ‘handlers‘: [‘console‘],
            ‘propagate‘: True,
            ‘level‘:‘DEBUG‘,
        },
    }
} 

  执行添加函数后屏幕打印的结果:

 三、编辑数据

  首先按照ORM方式,查询到符合要求的queryset对象,然后update()将符合要求的对象进行更新,实例如下:

from app01.models import Student
def edit(request,id):
    if request.method=="POST":
        stu_name=request.POST.get("name")
        stu_birth=request.POST.get("birth")
        stu_age=request.POST.get("age")
        Student.objects.filter(tid=id).update(name=stu_name,birth=stu_birth,age=stu_age)
        return redirect("/index/")
    stu=Student.objects.filter(tid=id)[0]
    return render(request,"edit.html",{"stu":stu})

四、删除数据

  首先按照ORM方式,查询到符合要求的queryset对象,然后delete()将符合要求的对象进行删除,实例如下:

def delet(request,id):
    Student.objects.filter(tid=id).delete()
    return redirect("/index/")
时间: 2024-10-13 05:31:46

Python Day73django ORM模型的相关文章

48.Python中ORM模型实现mysql数据库基本的增删改查操作

首先需要配置settings.py文件中的DATABASES与数据库的连接信息, DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'orm_intro_dem', 'USER': 'root', 'PASSWORD': 'root', 'HOST': '127.0.0.1', 'PORT': '3306', } } 之后将创建的app添加到settings.py文件中的INSTALLED_APPS中

Django ORM模型的一点体会

作者:Vamei 出处:http://www.cnblogs.com/vamei 严禁转载. 使用Python的Django模型的话,一般都会用它自带的ORM(Object-relational mapping)模型.这个ORM模型的设计比较简单,学起来不会特别花时间.不过,Django的ORM模型有自己的一套语法,有时候会觉得别扭.这里聊一下我自己的体会. 模型设计 这一部分算处理得比较好的部分.Django的数据模型的建立过程很简单,就是继承django.db.models中的Model类,

06.orm模型层

ORM模型层 01.常用字段 <1> CharField 字符串字段, 用于较短的字符串. CharField 要求必须有一个参数 maxlength, 用于从数据库层和Django校验层限制该字段所允许的最大字符数. <2> IntegerField #用于保存一个整数. <3> FloatField 一个浮点数. 必须 提供两个参数: 参数 描述: max_digits 总位数(不包括小数点和符号) decimal_places 小数位数 举例来说, 要保存最大值为

047:创建和映射ORM模型

创建ORM模型: ORM 模型一般都是放在 app 的 models.py 文件中.每个 app 都可以拥有自己的模型.并且如果这个模型想要映射到数据库中,那么这个 app 必须要放在 settings.py 的 INSTALLED_APP 中进行安装.以下是写一个简单的书籍 ORM 模型.示例代码如下: from django.db import modelsfrom datetime import datetime # Create your models here. class book(

12.ORM模型

ORM模型的创建和映射: 随着项目越来越大,采用写原生SQL的方式在代码中会出现大量的SQL语句,那么问题就出现了: SQL语句重复利用率不高,越复杂的SQL语句条件越多,代码越长.会出现很多相近的SQL语句. 很多SQL语句是在业务逻辑中拼出来的,如果有数据库需要更改,就要去修改这些逻辑,这会很容易漏掉对某些SQL语句的修改. 写SQL时容易忽略web安全问题,给未来造成隐患.SQL注入. ORM 全称Object Relational Mapping,中文叫做对象关系映射,通过ORM我们可以

ORM模型简介

ORM模型简介 1>什么是ORM? ORM,即 Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在操作具体的 业务对象时,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法即可. 2>ORM 两种最常见的实现方式是 ActiveRecord 和 DataMapper, ActiveRecord(非常流行) 中模型与数据表一一对应, DataMapper 中模型与数据表是完全分离的. 3>

laravel框架之ORM模型

ORM模型简介 1>什么是ORM? ORM,即 Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在操作具体的 业务对象时,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法即可. 2>ORM 两种最常见的实现方式是 ActiveRecord 和 DataMapper, ActiveRecord(非常流行) 中模型与数据表一一对应, DataMapper 中模型与数据表是完全分离的. 3>

Python MySQL ORM QuickORM hacking

# coding: utf-8 # # Python MySQL ORM QuickORM hacking # 说明: # 以前仅仅是知道有ORM的存在,但是对ORM这个东西内部工作原理不是很清楚, # 这次正好需要用到,于是解读一个相对来说很简单的Python2 ORM的例子. # # 参考源码: # A simple ORM provides elegant API for Python-MySQL operation # https://github.com/2shou/QuickORM

ORM 模型层

一个模型就是一个单独的,确定的数据的信息源,包含了数据的字段和操作方法.通常,每个模型映射为一张数据库中的表 基本原则: 每个模型在Django中的存在形式为一个python类 每个模型都是django.db.modeks.Model的子类 模型的每个字段(属性)代表数据表的某一列 Django将自动为你生成数据库访问API. 简单示例 下面的模型定义了一个"人",它具有first_name和last_name字段: from django.db import models class