Django ORM操作数据库:创建、增删改查与查询筛选实战
42 浏览量
更新于2024-08-31
收藏 86KB PDF 举报
"本文将详细介绍如何在Django中使用ORM进行数据库操作,包括表的创建、数据的增删改查以及常用的查询筛选方法。通过学习,你可以掌握Django ORM的基本用法,提升开发效率。"
在Django中,ORM(Object-Relational Mapping)是一种强大的工具,它允许开发者使用Python对象来操作数据库,而无需直接编写SQL语句。这种抽象层使得数据库操作更加简洁和直观。首先,我们需要创建一个Django项目和应用,这是使用ORM的基础。
1. 创建Django项目
使用`django-admin startproject`命令创建项目,例如`django-admin startproject orm_test`,然后进入项目目录并启动开发服务器,命令是`python manage.py runserver`。这将在默认浏览器中显示项目启动成功的信息。
2. 创建应用
在项目中添加应用,如`django-admin startapp cmdb`,接着需要在`settings.py`的`INSTALLED_APPS`列表中添加新创建的应用。
3. 配置数据库
Django默认使用SQLite数据库,但我们可以根据需要更改。在`settings.py`的`DATABASES`配置中,指定为MySQL,并提供相应的数据库名称、用户名、密码和主机信息。
4. 定义模型(ORM表)
在应用的`models.py`文件中定义模型,这对应于数据库中的表。例如,我们可以创建一个简单的`User`模型:
```python
from django.db import models
class User(models.Model):
username = models.CharField(max_length=20)
email = models.EmailField()
created_at = models.DateTimeField(auto_now_add=True)
```
5. 数据迁移
定义好模型后,需要通过数据迁移将模型同步到数据库。运行`python manage.py makemigrations`创建迁移文件,然后执行`python manage.py migrate`来应用这些迁移。
6. 插入数据(增)
通过模型类实例化对象并保存,实现数据插入:
```python
user = User(username='test_user', email='test@example.com')
user.save()
```
7. 查询数据(查)
Django ORM提供了丰富的查询API,例如:
```python
# 获取所有用户
users = User.objects.all()
# 根据用户名查询
specific_user = User.objects.get(username='test_user')
# 根据条件筛选
users_with_email = User.objects.filter(email__contains='example.com')
# 分页查询
users_page_1 = User.objects.all()[0:10] # 获取前10个用户
```
8. 更新数据(改)
直接通过对象调用`update`方法或者修改属性后保存:
```python
# 更新特定用户
specific_user.email = 'new_email@example.com'
specific_user.save()
# 批量更新
User.objects.filter(email__contains='example.com').update(email='new@example.com')
```
9. 删除数据(删)
使用`delete`方法删除对象:
```python
# 删除单个对象
specific_user.delete()
# 删除满足条件的所有对象
User.objects.filter(email__contains='example.com').delete()
```
总结,Django的ORM允许我们用Python代码来处理数据库操作,简化了传统SQL的复杂性,提高了开发效率。理解并熟练使用ORM,是Django开发中的必备技能。通过模型定义、数据迁移、以及增删改查操作,我们可以高效地管理数据库中的数据。同时,Django还提供了更高级的查询选项,如JOIN、聚合函数等,满足更复杂的查询需求。
1632 浏览量
187 浏览量
185 浏览量
113 浏览量
1047 浏览量
点击了解资源详情
123 浏览量
点击了解资源详情
260 浏览量
weixin_38625143
- 粉丝: 6
- 资源: 916
最新资源
- NLPModels.jl:优化模型的数据结构
- core:WordPress付款处理库的核心组件
- Hospital-in-C:使用C编程语言编写的完整医院管理系统
- OpenXenium:OpenXenium-原始Xbox的开源Xenium Modchip CPLD替换项目
- 三旺 NP312串口服务器驱动程序.rar
- joplin-cli-snap:乔普林终端应用程序(和Web剪辑服务器)的按扣包装
- ProtoGen.zip
- dotfiles::sparkling_heart:我可爱的增压点〜
- 广西壮族自治区森林覆盖率.rar
- 易语言移动网页元素
- 2,c语言鼠标连点器源码,c语言程序
- tbt:这是一个土巴兔项目演示上传或是入门二进制和发送发布
- crux-themes-5.0.2.zip
- wap-my-lab-page:WAP实验室项目
- 基于DSP28335 开发板实现SD_FAT_GreatDir的电路方案设计(pcb+原理图+源码)-电路方案
- 易语言移植的APC注入