Django学习笔记之ORM基础教程

 更新时间:2018年03月27日 11:42:03   作者:人生不如戏  
ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,下面这篇文章主要给大家介绍了关于Django学习笔记之ORM基础教程的相关资料,需要的朋友可以参考借鉴,下面来一起看看吧。

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(字段=值) #按照字段查找

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

相关文章

  • Python OpenCV处理图像之图像直方图和反向投影

    Python OpenCV处理图像之图像直方图和反向投影

    这篇文章主要为大家详细介绍了Python OpenCV处理图像之图像直方图和反向投影,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • python在多玩图片上下载妹子图的实现代码

    python在多玩图片上下载妹子图的实现代码

    学python的第二天,想写个东西出来玩玩,于是就写了这个,供那些才学一天的参考参考也行
    2013-08-08
  • python字符串中的单双引

    python字符串中的单双引

    下面小编就为大家带来一篇python字符串中的单双引。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-02-02
  • Python 代替 xftp 从 Linux 服务器下载文件的操作方法

    Python 代替 xftp 从 Linux 服务器下载文件的操作方法

    我们经常需要从Linux服务器上同步文件,但是xftp等工具都需要注册了,这里用免费的Python代码来下载文件,还可以扩展更多的自定义用法,这篇文章主要介绍了Python 代替 xftp 从 Linux 服务器下载文件,需要的朋友可以参考下
    2024-06-06
  • Python tkinter实现图片标注功能(完整代码)

    Python tkinter实现图片标注功能(完整代码)

    tkinter是Python下面向tk的图形界面接口库,可以方便地进行图形界面设计和交互操作编程,本文通过实例代码给大家介绍的Python tkinter实现图片标注功能,感兴趣的朋友一起看看吧
    2019-12-12
  • Python 无限级分类树状结构生成算法的实现

    Python 无限级分类树状结构生成算法的实现

    这篇文章主要介绍了Python 无限级分类树状结构生成算法的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01
  • python服务器端收发请求的实现代码

    python服务器端收发请求的实现代码

    这篇文章主要介绍了python服务器端收发请求的实现代码,需要的朋友可以参考下
    2014-09-09
  • Python 中单例模式的实现方法

    Python 中单例模式的实现方法

    这篇文章主要介绍了Python 中单例模式的实现方法,文章围绕主题展开详细的内容介绍,具有一定的参考价值,感兴趣的小伙伴可以学习一下下面文章详细内容
    2022-08-08
  • TensorFlow基本的常量、变量和运算操作详解

    TensorFlow基本的常量、变量和运算操作详解

    今天小编就为大家分享一篇TensorFlow基本的常量、变量和运算操作详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-02-02
  • Pandas实现数据拼接的操作方法详解

    Pandas实现数据拼接的操作方法详解

    Python处理大规模数据集的时候经常需要使用到合并、链接的方式进行数据集的整合,本文为大家主要介绍了.merge()、 .join() 和 .concat() 三种方法,感兴趣的可以了解一下
    2022-04-04

最新评论