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基础教程 

Django学习笔记之ORM基础教程

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

标签:django,orm,增删改查
0
投稿

猜你喜欢

  • python读写修改Excel之xlrd&xlwt&xlutils

    2022-04-03 16:35:43
  • 人工智能Text Generation文本生成原理示例详解

    2022-01-16 22:45:28
  • Python中if __name__ == '__main__'作用解析

    2021-04-14 09:02:42
  • Python3实现带附件的定时发送邮件功能

    2023-07-08 23:33:57
  • 详解Django框架中的视图级缓存

    2021-02-02 02:13:33
  • Python机器学习NLP自然语言处理基本操作之Seq2seq的用法

    2023-04-03 03:08:54
  • VUE写一个简单的表格实例

    2023-07-02 16:56:30
  • 详解MySQL双活同步复制四种解决方案

    2024-01-13 04:39:47
  • Oracle 11.2.0.4打补丁的方法

    2024-01-13 08:01:26
  • Python 中10进制数与16进制数相互转换问题

    2021-11-29 15:37:26
  • matplotlib中legend位置调整解析

    2023-07-17 03:00:44
  • python判断元素是否存在的实例方法

    2021-02-24 23:20:08
  • asp如何显示SQL数据库所有表的名称?

    2010-06-08 09:30:00
  • JS数组Array常用方法汇总+实例

    2024-04-30 10:42:02
  • golang中strconv.ParseInt函数用法示例

    2024-04-23 09:46:48
  • Python 通过爬虫实现GitHub网页的模拟登录的示例代码

    2022-04-27 00:26:39
  • 使用git处理github中提交有冲突的pull request的问题

    2023-03-18 13:27:55
  • 一个ASP站内搜索的实例源代码

    2007-09-21 12:13:00
  • Python函数用法和底层原理分析

    2023-09-13 23:42:37
  • Javascript将数值转换为金额格式(分隔千分位和自动增加小数点)

    2023-08-18 10:31:11
  • asp之家 网络编程 m.aspxhome.com