django 之 orm
Posted lx3822
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django 之 orm相关的知识,希望对你有一定的参考价值。
ORM(Object Relational Mapping)
ORM介绍
orm概念
对象关系映射(object Relational Mapping简称ORM )模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。
简单的说 ORM 是通过使用秒速对象和数据库之间映射的元数据 将程序中的对象自动持久化到关系数据库中。
ORM 在业务逻辑层和数据库层之间充当桥梁做用
ORM 的由来
让我们从O/R开始。字母O起源于"对象"(Object),而R则来自于"关系"(Relational)。
几乎所有的软件开发过程中都会涉及到对象和关系数据库。在用户层面和业务逻辑层面,我们是面向对象的。当对象的信息发生变化的时候,我们就需要把对象的信息保存在关系数据库中。
按照之前的方式来进行开发就会出现程序员会在自己的业务逻辑代码中夹杂很多SQL语句用来增加、读取、修改、删除相关数据,而这些代码通常都是重复的
ORM 的优势
ORM 解决的主要问题是的UI想和关系的映射, 它通常把一个类和一个表一一对应, 类的每个实例对应表中的一条记录, 类的每个属性对应表中的每个字段。
ORM 提供了对数据库的映射 不用之间编写SQL代码,只需像操作对象一样从数据库操作数据。
让程序员专注业务逻辑的处理,提高了开发效率。
ORM 的劣势
ORM的缺点是会在一定程度上牺牲程序的执行效率, (需要经过翻译才能转换成SQL语句)
ORM 用多了SQL 语句就不会写了, 关系数据库相关技能退化。
ORM 总结
ORM 只是一种工具, 工具确实能解决一些重复简单的劳动, 这是不可否认的,、但是我们不能指望某个工具能一劳永逸的解决所有问题, 一些特殊问题 还是需要特殊处理。
但是在整个软件开发过程中需要特殊处理的情况应该都是很少的 , 否则所谓的工具也就失去了存在的意义。
Django中的ORM
Django 项目使用的mysql数据库
1,在Django项目的settings.py 文件中, 配置数据库连接信息:
DATABASES = { ‘default‘: { ‘ENGINE‘: ‘django.db.backends.mysql‘, ‘NAME‘: "day62", ‘HOST‘:"127.0.0.1", ‘POST‘:3306, ‘USER‘:‘root‘, ‘PASSWORD‘:‘123‘, } }
2.在Django 项目的__init__.py 文件中写如下代码, 告诉Django使用pymysql模块连接MySQL数据库:
import pymysql
pymysql.install_as_MySQLdb()
model
在Django中model 是你数据的单一,明确的信息来源。。
他包含了你存储的数据的重要的字段和行为。
通常一个模型(model)映射到一个数据库表,
基本情况:
每一个模型都是一个Python类, 它是Django.bd.models.Model 的子类。
模型的每一个属性都代表一个数据库字段。
下面定义一个user类:
上面的这个user模型会想这样创建一个数据库表:
create table user( id int primary key, name varcher(16), password varchar(128))
一些说明:
表myapp_user的名称是自动生成的,如果你要自定义表名,需要在model的Meta类中指定 db_table 参数,强烈建议使用小写表名,特别是使用MySQL作为后端数据库时。
id字段是自动添加的,如果你想要指定自定义主键,只需在其中一个字段中指定 primary_key=True 即可。如果Django发现你已经明确地设置了Field.primary_key,它将不会添加自动ID列。
本示例中的CREATE TABLE SQL使用PostgreSQL语法进行格式化,但值得注意的是,Django会根据配置文件中指定的数据库后端类型来生成相应的SQL语句。
Django支持MySQL5.5及更高版本。
以上是关于django 之 orm的主要内容,如果未能解决你的问题,请参考以下文章