ORM:是Object Relational Mapping的缩写。中文名称为对象关系映射,是面向对象的编程语言中常用的技术。用于实现面向对象语言里不同数据类型系统的数据之间的转换。
在Django中,使用SQL语句对数据库进行操作(小编是自用的是MySQL社区版)有很大局限性:
1、对数据库操作直接使用mysql语句的话,经常会有一些重复的语句,python作为一门追求代码简洁优雅的语言,这个好像不能忍
2、在写后台时使用SQL语句,会有安全隐患。比如有人在在提交信息时写上SQL语句,就有可能对数据库造成破坏。这个就是通常所说的“SQL注入”问题。
3、有时候,一条SQL语句可能会很长。直接用SQL语句的话,就是一件让人蛋疼的事了。
主要思想:通过类的方式操作数据库,把表映射成类,把表中的每一列当做一个属性,把表的每一列当做一个实例对象。
使用ORM模型可以有效解决mysql语句的不足,同时对性能的消耗也比较少。使用ORM模型操作mysql和使用navicat操作mysql类似,是对mysql语句进行封装,使执行起来方便。
首先要在models.py文件中定义ORM模型
from django.db import models
# ORM模型必须创建在models.py文件中
# 将一个普通的类变成可以映射到数据库中的ORM模型
# 需要将父类设置为models.Model或者是models.Model类的子类
class Fruit(models.Model):
id = models.AutoField(primary_key=True)
english_name = models.CharField(max_length=20, null=False)
chinese_name = models.CharField(max_length=20, null=False)
price = models.FloatField(null=False, default=0)
# 想要使用的话,必须先生成脚本迁移文件
# 进入工程文件,命令行输入:python manage.py mekemigrations
# 然后将生程的迁移文件映射到数据库中:python manage.py migrate
模型定义完可以在视图中定义相应的视图函数进行操作:
from django.shortcuts import render
from django.http import HttpResponse
from django.db import connection
from .models import Fruit
def add_fruit(request):
# 向数据库中添加数据
fruit = Fruit(id=1, chinese_name="香蕉", english_name="banana", price=3.5)
fruit.save()
fruit = Fruit(id=2, chinese_name="苹果", english_name="apple", price=4.5)
fruit.save()
# 从数据库中查询数据,默认的查询方式,参数pk即SQL语句中的主键
Fruit.objects.get(pk=1)
# 用下面的方式可以删除查询到的数据
fruit1 = Fruit.objects.get(price=3.5)
fruit1.delete()
# 用下面的方式可以修改查询到的数据
fruit2 = Fruit.objects.get(price=4.5)
fruit2.price=4.0
这样就可以在Django项目中用ORM模型对数据库进行操作了。