Django学习笔记之ORM基础教程
作者:人生不如戏 发布时间:2022-07-25 22:59:07
ORM简介
ORM概念
对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。
简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。
ORM在业务逻辑层和数据库层之间充当了桥梁的作用。
ORM由来
让我们从O/R开始。字母O起源于"对象"(Object),而R则来自于"关系"(Relational)。
几乎所有的软件开发过程中都会涉及到对象和关系数据库。在用户层面和业务逻辑层面,我们是面向对象的。当对象的信息发生变化的时候,我们就需要把对象的信息保存在关系数据库中。
按照之前的方式来进行开发就会出现程序员会在自己的业务逻辑代码中夹杂很多SQL语句用来增加、读取、修改、删除相关数据,而这些代码通常都是重复的。
ORM的优势
ORM解决的主要问题是对象和关系的映射。它通常把一个类和一个表一一对应,类的每个实例对应表中的一条记录,类的每个属性对应表中的每个字段。
ORM提供了对数据库的映射,不用直接编写SQL代码,只需像操作对象一样从数据库操作数据。
让软件开发人员专注于业务逻辑的处理,提高了开发效率。
ORM的劣势
ORM的缺点是会在一定程度上牺牲程序的执行效率。
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'<br data-filtered="filtered"><br data-filtered="filtered">obj.save()
查
models.Person.object.all() #查找所有记录,返回一个queryset对象
models.Person.object.get(字段=值) #按照字段查找
来源:http://www.cnblogs.com/fu-yong/p/8652419.html


猜你喜欢
- 本文实例为大家分享了Python实现猜拳游戏的具体代码,供大家参考,具体内容如下分析1.玩家从控制台输入内容2.电脑随机输出石头剪刀布3.判
- 今天在使用pytorch进行训练,在运行 loss.backward() 误差反向传播时出错 :RuntimeError: grad can
- 本文实例讲述了Python实现栈和队列的简单操作方法。分享给大家供大家参考,具体如下:先简单的了解一下数据结构里面的栈和堆:栈和队列是两种基
- 在pytest自动化测试中,如果只是简单的从应用的角度来说,完全可以不去了解pytest中的显示信息的部分以及原理,完全可以通过使用推荐的p
- 摘要:发现给div绑定keyup.enter事件是没有效果的。那该如何实现呢?下面直接上代码吧1、在template中代码2、在create
- 虽然我们一直使用书籍搜索的示例表单,并将起改进的很完美,但是这还是相当的简陋: 只包含一个字段,q。这简单的例子,我们不需要使用Django
- Exec 包我们可以使用官方的 os/exec 包来运行外部命令。当我们执行 shell 命令时,我们是在 G
- 加载相关库import randomimport seaborn as snsimport matplotlib.pyplot as plt
- 在网上找到的随机不重复查询代码:select top 15 * from article&
- 目录一、MySQL触发器创建:1、MySQL触发器的创建语法:2、MySQL创建语法中的关键词解释:3、触发执行语句内容(trigger_b
- 学习目的: 掌握文本框的用法 初次接触try…catch…语法 今天内容很轻松,用一个例子,输入年月日,判断输入是否正确 图片如下: 用个
- NumPy 是一个Python 库,用于 Python 编程中的科学计算。在本教程中,你将学习如何在 NumPy 数组上以多种方式添加、删除
- 如下所示:import pandas as pdfile = pd.read_csv('file.csv',iterator
- (1)服务器配置:[root@localhost ~]# cd /usr/local/src/[root@localhost src]# w
- ndarray.ndim:维度ndarray.shape:形状ndarray.size:元素个数ndarray.dtype:元素数据类型nd
- 例如1441,那么会产生“运行时错误”,报错信息类似下面:SessionID 错误 'ASP 0164 : 80004005'
- 需求:用SQL语句随机从数据库中随机取N条数据。以前不太清楚SQL语句可以直接随机取数据今天查了一下,发现有两个随机函数: newid()
- 本文实例讲述了go语言map字典删除操作的方法。分享给大家供大家参考。具体分析如下:这里先构造了一点map,添加了青岛、济南、烟台三地的拼音
- Python 中的 Operator 模块可以让它支持函数式编程。1 计算函数假设我们需要一个计算阶乘的函数,一般做法是使用递归。如果使用函
- 在SQL查询分析器执行以下代码就可以了。declare @t varchar(255),@c varchar(255)declare tab