Django之ORM基础

ORM简介

ORM概念

对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。python

简单的说,ORM是经过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。mysql

ORM在业务逻辑层和数据库层之间充当了桥梁的做用。程序员

ORM由来

让咱们从O/R开始。字母O起源于"对象"(Object),而R则来自于"关系"(Relational)。sql

几乎全部的软件开发过程当中都会涉及到对象和关系数据库。在用户层面和业务逻辑层面,咱们是面向对象的。当对象的信息发生变化的时候,咱们就须要把对象的信息保存在关系数据库中。数据库

按照以前的方式来进行开发就会出现程序员会在本身的业务逻辑代码中夹杂不少SQL语句用来增长、读取、修改、删除相关数据,而这些代码一般都是重复的。django

ORM的优点

ORM解决的主要问题是对象和关系的映射。它一般把一个类和一个表一一对应,类的每一个实例对应表中的一条记录,类的每一个属性对应表中的每一个字段。 app

ORM提供了对数据库的映射,不用直接编写SQL代码,只需像操做对象同样从数据库操做数据。工具

让软件开发人员专一于业务逻辑的处理,提升了开发效率。spa

ORM的劣势

ORM的缺点是会在必定程度上牺牲程序的执行效率。3d

ORM用多了SQL语句就不会写了,关系数据库相关技能退化...

ORM总结

ORM只是一种工具,工具确实能解决一些重复,简单的劳动。这是不能否认的。

但咱们不能期望某个工具能一劳永逸地解决全部问题,一些特殊问题仍是须要特殊处理的。

可是在整个软件开发过程当中须要特殊处理的状况应该都是不多的,不然所谓的工具也就失去了它存在的意义。

Django链接MySQL数据库

1. 在Django项目的settings.py文件中,配置数据库链接信息:

DATABASES = {
    "default": {
        "ENGINE": "django.db.backends.mysql",
        "NAME": "你的数据库名称",  # 须要本身手动建立数据库
        "USER": "数据库用户名",
        "PASSWORD": "数据库密码",
        "HOST": "数据库IP",
        "POST": 3306
    }
}

2. 在Django项目(注意,项目里的,不是app)的__init__.py文件中写以下代码,告诉Django使用pymysql模块链接MySQL数据库:

import pymysql

pymysql.install_as_MySQLdb()

3.如需在pycharm里视图操做:

 

Django中ORM的(简单)增删改查

增长表

下面这个例子定义了一个 Person 模型,包含 first_name 和 last_name

from django.db import models

class Person(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)

而后执行下面命令:

python manage.py makemigrations

python manage.py migrate

first_name 和 last_name 是模型的字段。每一个字段被指定为一个类属性,每一个属性映射到一个数据库列。

上面的 Person 模型将会像这样建立一个数据库表:

CREATE TABLE myapp_person (
    "id" serial NOT NULL PRIMARY KEY,
    "first_name" varchar(30) NOT NULL,
    "last_name" varchar(30) NOT NULL
);

增长数据

models.Person.object.create(first_name='fu',last_name='yong')

models.Person.object.get(id=1).delete()

obj = models.Person.object.get(id=1)
obj.last_name = 'xiaoyong'

obj.save()

models.Person.object.all() #查找全部记录,返回一个queryset对象
models.Person.object.get(字段=值)  #按照字段查找
相关文章
相关标签/搜索