1. 什么是ORM?
ORM(Object-Relational Mapping),即对象关系映射,是将关系型数据库中的表结构映射到代码中的一种技术。
传统的开发方式是通过SQL语句直接对数据库进行操作,但是这种方式存在一些繁琐和复杂的问题。ORM框架的出现,解决了这些问题,使得开发人员可以更轻松地完成与数据库的交互。
在Python中,ORM框架有很多种,比如SQLAlchemy、Peewee等,而Django ORM是其中较为流行的一种。
2. Django ORM基本使用
2.1 定义模型
在Django中,模型是指与数据库表相对应的类。通过定义模型类,可以轻松地创建、查询、修改和删除数据库记录。
下面是一个简单的模型定义:
from django.db import models
class Book(models.Model):
name = models.CharField(max_length=100)
author = models.CharField(max_length=50)
pub_date = models.DateField(auto_now_add=True)
price = models.DecimalField(max_digits=7, decimal_places=2)
在这个例子中,定义了一个名为Book的模型类,它有四个属性,分别是name、author、pub_date和price。每个属性都对应着数据库表中的一个字段。
其中,name和author是CharField类型,分别表示书名和作者名;pub_date是DateField类型,表示出版日期;price是DecimalField类型,表示价格。
在实际应用中,需要根据具体情况为模型类定义字段类型、关联关系等内容。
2.2 查询数据
查询数据是ORM框架的核心功能之一。在Django ORM中,查询数据有很多种方式。
2.2.1 列表查询
使用all()方法可以查询模型中的所有记录,返回一个查询集(QuerySet),可以对其进行进一步的操作。
books = Book.objects.all()
for book in books:
print(book.name, book.author, book.pub_date, book.price)
2.2.2 条件查询
可以使用filter()方法进行条件查询,返回一个查询集。
books = Book.objects.filter(author='Jane')
for book in books:
print(book.name, book.author, book.pub_date, book.price)
以上代码中,查询出了所有作者名为Jane的图书记录。
除了filter()方法,还可以使用get()方法查询单个记录。如果查询结果不唯一,则会抛出MultipleObjectsReturned异常。
如果查询结果为空,则会抛出DoesNotExist异常。
book = Book.objects.get(name='Python入门')
print(book.name, book.author, book.pub_date, book.price)
以上代码中,查询出了书名为Python入门的图书记录。
2.2.3 排序查询
可以使用order_by()方法对查询集进行排序。
books = Book.objects.order_by('-price')
for book in books:
print(book.name, book.author, book.pub_date, book.price)
以上代码中,查询出了价格从高到低排序的所有图书记录。
2.2.4 聚合查询
可以使用aggregate()方法进行聚合查询,如求和、平均值、最大值等。
from django.db.models import Sum
total_price = Book.objects.aggregate(Sum('price'))
print(total_price)
以上代码中,查询出了所有图书价格的总和。
2.3 修改数据
在Django ORM中,修改数据需要先获取到要修改的记录,然后修改它的属性并保存即可。
book = Book.objects.get(name='Python入门')
book.author = 'John'
book.save()
以上代码中,修改了书名为Python入门的代理人Author为John,并保存到数据库。
2.4 删除数据
删除数据需要先获取到要删除的记录,然后调用delete()方法即可。
book = Book.objects.get(name='Python入门')
book.delete()
以上代码中,删除了书名为Python入门的图书记录。
3. 总结
本文介绍了Python中的ORM框架Django ORM。通过模型定义、查询数据、修改数据和删除数据等操作,可以轻松地完成对数据库的操作。
ORM框架的出现,解决了传统方式中的许多问题,使得开发人员可以更加关注业务逻辑和代码设计,提高了开发效率。