Python ORM - Django ORM 和 SQL,利弊简述!

Python ORM - Django ORM 与 SQL,哪个更好?
在使用数据库时,您是否曾为 SQL 而头疼?"我真的需要每次都写这么复杂的 SQL 语法吗......" 🤔 🤔
如果是这样的话 Python 是时候了解 ORM 了,尤其是 Django ORM 是一种强大的工具,每个 Python 开发人员都应该至少使用一次。
在本帖中,我们将使用 什么是 Python ORM、它的优缺点以及 Django ORM 与 SQL 的比较一目了然,到最后你会对数据库更加熟悉!
什么是 ORM?
ORM(对象关系映射)是 使用面向对象编程语言处理数据库的技巧简而言之,它是一款无需 SQL 即可让您使用 Python 代码操作数据库的工具。

ORM 的关键概念
- 表 → 类:将数据库中的表格映射到 Python 类。
- 行 → 对象:表格中的每一行都会转换为类对象。
- 查询 → 方法Python:通过调用 Python 方法而不是 SQL 来操作数据。
例如,要添加数据,您可以这样做。
- SQL 方法:
INSERT INTO users (name, age) VALUES ('Alice', 25); - ORM 方法:
user = User(name="Alice", age=25); user.save()
这种 ORM 的妙处在于,你不需要懂 SQL,就能以面向对象的方式处理数据。
Python ORM 的缺点和优点

Python ORM 缺点
- 复杂查询限制JOIN 或批量数据处理的性能可能不如 SQL。
- 抽象成本ORM 会自动生成 SQL,这会带来额外的性能开销。
- 所需学习时间学习 ORM 语法和模型设计需要时间。
Python ORM 的优势
- 加快发展无需编写 SQL,开发速度更快。
- 提高可读性:代码直观,便于初学者理解。
- 易于维护:维护简单,因为数据库发生变化时只需修改模型。
- DB 独立性它兼容多种数据库(MySQL、PostgreSQL 等),因此具有高度可扩展性。
Django ORM 与 SQL
与真实世界的例子进行比较
现在,让我们比较一下 Raw SQL 和 Django ORM,后者是 Python ORM 的代表。

1. 使用 Django ORM 添加数据
# models.py
from django.db import models
类 User(models.Model):
name = models.CharField(max_length=100)
age = models.IntegerField()
添加 # 数据
user = User(name="Alice", age=25)
user.save()
# 代码详见本帖末尾!2. 使用 SQL 添加数据
INSERT INTO users (name, age) VALUES ('Alice', 25);3. 主要差异
- 代码简洁Django:Django ORM 比 SQL 更直观、更简洁。
- 可维护性Django:在修改数据库时,Django ORM 更易于修改。
- 性能对于复杂的查询,SQL 可能更快。
什么时候应该使用 Django ORM 与 SQL?
当 Django ORM 适合您时
- 当简单的 CRUD 操作(添加、检索、修改和删除数据)成为常态时。
- 当您想快速处理数据库时。
什么时候 SQL 适合您
- 如果需要复杂查询(JOIN、子查询等)。
- 在大型应用中,性能优化至关重要。
Django ORM 代码示例
# models.py
from django.db import models
类 User(models.Model):
用户) name = models.CharField(max_length=100) # name 字段(字符串)
age = models.IntegerField() # 年龄字段(整数)
添加 # 数据
user = User(name="Alice", age=25) 创建 # 对象
user.save() 保存到 # 数据库
检索 # 数据
users = User.objects.all() 获取所有 # 数据
for users in users:
print(user.name, user.age)
# 修改数据
alice = User.objects.get(name="Alice") # 根据特定条件检索数据
alice.age = 26 # 修改年龄
alice.save() # 保存更改
# 删除数据
alice.delete() # 删除数据
代码评注
- 定义模型: Django 的
模型.模型定义一个从该类继承并与数据库关联的类。
CharField:存储字符串数据。IntegerField:存储整数数据。- 创建对象:
用户(name="Alice",年龄=25)来创建用户对象。- 存储数据:
保存()方法保存到数据库。- 获取数据:
objects.all()方法获取所有数据。- 修改数据:
获取()获取特定数据并更改值,然后使用保存()来拯救它。- 删除数据:
删除()方法删除数据。
总结
在本文中,我们将使用 Python ORM从基本概念,到"...... Django ORM 与 SQL 我们甚至做过比较。Django ORM 已成为 Python 开发人员的强大工具,它抽象掉了 SQL 的复杂性,使开发更富成效。不过,当需要进行复杂查询时,SQL 可能仍然更可取。
如果您以前在数据库管理方面遇到过困难,Django ORM 是一个很好的开始。这是 Python 开发人员必备的技能! 😊 如果您对 Django 感兴趣,请查看 创建 Python Django 网站:新手指南 看看这篇文章!
# 代码说明
# models.py from django.db import models
- 该文件保存为 "models.py"。这是 Django 中定义模型的标准文件名。
- 从 "django.db "中导入 "models "模块,它提供了 Django 的 ORM 功能。
类 User(models.Model):
- 定义一个名为 "用户 "的新类。
- 该类继承自 "models.Model",这使得 User 类成为一个 Django 模型。
name = models.CharField(max_length=100)
- 定义一个名为 "名称 "的字段。
- 该字段属于 CharField 类型,用于存储字符串。
- max_length=100 "表示该字段最多可存储 100 个字符。
age = models.IntegerField()
- 定义一个名为 "年龄 "的字段。
- 该字段属于 IntegerField 类型,用于存储整数。
添加 # 数据 user = User(name="Alice", age=25)
- 创建一个新的用户模型实例。
- 在 "姓名 "字段中输入 "Alice",在 "年龄 "字段中输入 25。
user.save()
- 调用 "save() "方法将创建的用户实例保存到数据库中。
- 该命令执行实际 SQL INSERT 查询。






