Django笔记——操作数据库(ORM)第一节

Django学习之操作数据库

操作数据库——ORM模型创建及映射

一、ORM简单介绍

1.1 原理

ORM的核心思想是将面向对象编程(OOP)中的类和对象与关系型数据库(RDB)中的表和记录进行映射。在Django中,这种映射通过定义模型(Model)来实现,每个模型对应数据库中的一个表,而模型的实例则代表表中的一行数据。

  • 类到表的映射:在Django中,你定义的每个Model类都会被映射到数据库中的一个表。例如:

    # models.py
    
    from django.db import models
    
    class Book(models.Model):
        title = models.CharField(max_length=200)
        author = models.CharField(max_length=100)
    

    这段代码定义了一个名为Book的模型,它有两个字段:titleauthor,Django会自动为这个模型创建一个名为book的数据库表,并且为每个字段创建相应的列。

  • 对象到记录的映射:当你创建一个Book类的实例并保存时,Django会在数据库中插入一条新的记录。

    # views.py
    def add_book(request):
    	book = Book(title="第五人格攻略", author="老八")
    	book.save()
        return HttpResponse('书本插入成功')
    

    上述操作等同于执行SQL语句INSERT INTO book (title, author) VALUES ('第五人格攻略', '老八')

1.2 作用
  1. 简化数据库交互:通过ORM,开发者可以使用面向对象的方式与数据库交互,而不需要直接编写SQL语句。例如,查找所有由“老八”撰写的书籍:

    books = Book.objects.filter(author="老八")
    
  2. 支持多种数据库后端:Django的ORM允许你在不修改业务逻辑的情况下切换不同的数据库后端(如PostgreSQL、MySQL等),只需更改配置文件即可。

  3. 迁移管理:Django提供了一套强大的迁移工具,用于管理数据库模式的变化。当你的模型发生变化时,你可以生成并应用迁移脚本来更新数据库结构。

  4. 事务支持:Django支持数据库事务,确保一组操作要么全部成功,要么全部失败,从而维护数据的一致性。

1.3 优势
  1. 提高开发效率:ORM减少了手动编写SQL的需求,使得CRUD操作更加简单快捷。开发者可以专注于业务逻辑而非底层数据库细节。

  2. 增强安全性:ORM通过参数化查询等方式有效防止了SQL注入攻击,提高了应用程序的安全性。

  3. 可维护性强:由于ORM提供了更高层次的数据访问抽象,因此代码通常更容易理解和维护。此外,模型定义清晰地反映了数据库结构,有助于团队协作。

  4. 跨数据库兼容性:如前所述,ORM允许应用程序轻松切换数据库后端,增强了系统的灵活性和可移植性。

  5. 查询优化:尽管ORM隐藏了大部分SQL细节,但大多数现代ORM框架(包括Django)都提供了优化查询的能力。例如,Django的select_related()prefetch_related()方法可以帮助减少查询次数,提高性能。

二、ORM模型创建及映射

2.1 创建ORM模型
# models.py : app路径下的models.py文件
from django.db import models
from datetime import datetime

class Game(models.Model):
    # id = models.IntegerField(primary_key=True)  默认就有,一般不用自己定义
    name = models.CharField(max_length=100)
    character = models.CharField(max_length=20)
    pub_time = models.DateTimeField(auto_now_add=True)
    price = models.FloatField(default=0)
2.2 将模型映射到数据库

前提
定义好模型,将 app 添加到 settings.pyINSTALLED_APP

INSTALLED_APPS = [
    ...
    'games',
]

终端中操作:(game替换成自己的应用名)

# 创建应用
python manage.py startapp game

#更新某app模型
# 1.创建迁移文件
python manage.py makemigrations game
# 2.将迁移应用到数据库
python manage.py migrate
from django.shortcuts import HttpResponse
from .models import Game

def add_game(request):
    # game = Game(name='第五人格', character='调香师', price=4888)
    # game.save()
    game = Game(name='原神', character='宵宫', price=6480)
    game.save()
    return HttpResponse('游戏角色插入成功!')

你可能感兴趣的:(Django,数据库,django,笔记)