ORM模型

ORM模型通过对象关系映射提高开发效率,减少SQL语句的编写。Django的ORM支持多种数据库,提供易用性和灵活性。创建ORM模型通常在models.py文件中,如Book模型,包含name、author、pub_time和price字段。通过`makemigrations`和`migrate`命令将模型同步到数据库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

ORM模型介绍

随着项目越来越大,采用写原生SQL的方式在代码中会出现大量的SQL语句,那么问题就出现了:

SQL语句重复利用率不高,越复杂的SQL语句条件越多,代码越长。会出现很多相近的SQL语句。
很多SQL语句是在业务逻辑中拼出来的,如果有数据库需要更改,就要去修改这些逻辑,这会很容易漏掉对某些SQL语句的修改。
写SQL时容易忽略web安全问题,给未来造成隐患。SQL注入。
ORM,全称Object Relational Mapping,中文叫做对象关系映射,通过ORM我们可以通过类的方式去操作数据库,而不用再写原生的SQL语句。通过把表映射成类,把行作实例,把字段作为属性,ORM在执行对象操作的时候最终还是会把对应的操作转换为数据库原生语句。使用ORM有许多优点:

易用性:使用ORM做数据库的开发可以有效的减少重复SQL语句的概率,写出来的模型也更加直观、清晰。
性能损耗小:ORM转换成底层数据库操作指令确实会有一些开销。但从实际的情况来看,这种性能损耗很少(不足5%),只要不是对性能有严苛的要求,综合考虑开发效率、代码的阅读性,带来的好处要远远大于性能损耗,而且项目越大作用越明显。
设计灵活:可以轻松的写出复杂的查询。
可移植性:Django封装了底层的数据库实现,支持多个关系数据库引擎,包括流行的MySQL、PostgreSQL和SQLite。可以非常轻松的切换数据库。

创建ORM模型:

ORM模型一般都是放在app的models.py文件中。每个app都可以拥有自己的模型。并且如果这个模型想要映射到数据库中,那么这个app必须要放在settings.py的INSTALLED_APP中进行安装。以下是写一个简单的书籍ORM模型。示例代码如下:

from django.db import models
class Book(models.Model):
name = models.CharField(max_length=20,null=False)
author = models.CharField(

<think>好的,用户想要了解ORM模型相关的API使用教程和文档,特别是结合FastAPI和Tortoise ORM的情况。首先,我需要整理Tortoise ORM的基础知识,比如模型定义、字段类型和CRUD操作。然后,结合FastAPI的整合步骤,比如如何配置数据库连接和创建路由。记得要引用提供的参考资料,尤其是引用[1]和引用[2]。用户可能需要具体的代码示例,比如定义模型、执行查询以及批量操作,比如bulk_create的使用。此外,生成相关问题时,要考虑用户可能关心的性能优化、事务处理、异步操作和迁移工具Aerich。需要确保回答结构清晰,分步骤讲解,并且提供文档链接方便用户进一步查阅。</think>### ORM 模型 API 使用教程与文档 #### 1. **Tortoise ORM 基础** Tortoise ORM 是 Python 的异步关系对象映射库,支持 PostgreSQL、MySQL 和 SQLite。以下是核心功能与用法: - **模型定义** 使用 `Model` 类定义数据表结构,例如: ```python from tortoise.models import Model from tortoise import fields class User(Model): id = fields.IntField(pk=True) name = fields.CharField(max_length=50) created_at = fields.DatetimeField(auto_now_add=True) ``` 字段类型包括 `IntField`、`CharField`、`JSONField` 等,支持索引和默认值[^2]。 - **CRUD 操作** - **创建**:`await User.create(name="Alice")` - **查询**:`await User.filter(name="Alice").first()` - **更新**:`await User.filter(id=1).update(name="Bob")` - **删除**:`await User.filter(id=1).delete()` #### 2. **FastAPI 整合实践** FastAPI 与 Tortoise ORM 结合可实现高性能异步 API: ```python from fastapi import FastAPI from tortoise.contrib.fastapi import register_tortoise app = FastAPI() # 配置数据库连接 register_tortoise( app, db_url="sqlite://db.sqlite3", modules={"models": ["models"]}, # 模型文件路径 generate_schemas=True, # 自动生成表结构 ) ``` #### 3. **批量操作 API** Tortoise ORM 提供高效的批量操作方法: ```python students = [ Student(name="Tom", age=20), Student(name="Lily", age=22) ] await Student.bulk_create(students) # 批量插入数据 ``` #### 4. **高级功能** - **事务处理**:使用 `in_transaction()` 包裹原子操作 - **关联查询**:通过 `ForeignKeyField` 定义外键关系 - **聚合函数**:如 `Count()`、`Sum()` #### 5. **文档与资源** - **官方文档**:[Tortoise ORM Documentation](https://tortoise-orm.readthedocs.io/) - **实战项目模板**:[fastapi-tortoise 项目地址](https://gitcode.com/gh_mirrors/fa/fastapi-tortoise)[^1] - **数据库迁移工具**:使用 Aerich 管理模型变更 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值