Django中的ORM介绍

Django 的 ORM(Object-Relational Mapping,对象关系映射)是 Django 框架提供的数据库抽象层,允许开发者使用 Python 代码操作数据库,而无需直接编写 SQL 语句。它提供了一种高效、直观的方式来管理数据库模型和查询数据。

Django ORM 核心概念

1. 模型(Model)

Django ORM 使用 Python 类来定义数据库表,每个类对应数据库中的一张表,类的属性对应表的字段。

示例:

复制代码
from django.db import models

class Employee(models.Model):
    name = models.CharField(max_length=100)  # 字符串字段
    age = models.IntegerField()  # 整数字段
    department = models.ForeignKey('Department', on_delete=models.CASCADE)  # 外键

    def __str__(self):
        return self.name
  • CharFieldIntegerField 等字段对应数据库中的不同类型列。
  • ForeignKey 用于建立表之间的关系。

2. 迁移(Migrations)

创建或修改模型后,需要执行迁移,以便同步数据库结构:

复制代码
python manage.py makemigrations
python manage.py migrate

3. 查询数据

Django ORM 允许使用 QuerySet 查询数据,例如:

复制代码
# 获取所有员工
employees = Employee.objects.all()

# 筛选年龄大于 30 的员工
employees_over_30 = Employee.objects.filter(age__gt=30)

# 获取单个对象
employee = Employee.objects.get(id=1)

# 排序
employees = Employee.objects.order_by('-age')

# 计数
count = Employee.objects.count()

4. 插入数据

复制代码
new_employee = Employee(name="张三", age=28)
new_employee.save()

或者使用 create 方法:

复制代码
Employee.objects.create(name="李四", age=32)

5. 更新数据

复制代码
employee = Employee.objects.get(id=1)
employee.age = 35
employee.save()

6. 删除数据

复制代码
employee = Employee.objects.get(id=1)
employee.delete()

Django ORM 的优点

  • 避免手写 SQL,让开发更加 Pythonic。
  • 数据库无关性,支持 SQLite、MySQL、PostgreSQL 等多种数据库。
  • 安全性,自动防止 SQL 注入。

如果你的项目需要使用数据库,Django ORM 是一个强大的工具,可以极大提高开发效率。

相关推荐
Amctwd16 分钟前
【SQL】如何在 SQL 中统计结构化字符串的特征频率
数据库·sql
noravinsc42 分钟前
redis是内存级缓存吗
后端·python·django
betazhou1 小时前
基于Linux环境实现Oracle goldengate远程抽取MySQL同步数据到MySQL
linux·数据库·mysql·oracle·ogg
百锦再1 小时前
大数据技术的主要方向及其应用详解
大数据·linux·网络·python·django·pygame
lyrhhhhhhhh1 小时前
Spring 框架 JDBC 模板技术详解
java·数据库·spring
noravinsc2 小时前
django中用 InforSuite RDS 替代memcache
后端·python·django
喝醉的小喵2 小时前
【mysql】并发 Insert 的死锁问题 第二弹
数据库·后端·mysql·死锁
付出不多3 小时前
Linux——mysql主从复制与读写分离
数据库·mysql
初次见面我叫泰隆3 小时前
MySQL——1、数据库基础
数据库·adb
Chasing__Dreams3 小时前
Redis--基础知识点--26--过期删除策略 与 淘汰策略
数据库·redis·缓存