Tortoise-ORM 是一个面向 Python 的异步 ORM 框架,深受开发者喜爱。它的设计灵感来自于 Django ORM,但专为异步编程而创建,适用于 FastAPI、Sanic、Starlette 等基于 asyncio 的框架。本文将介绍如何使用 Tortoise-ORM 进行数据持久化操作,包括安装、配置和基本操作示例。

一、安装 Tortoise-ORM

要使用 Tortoise-ORM,首先需要安装相关库。可以通过 pip 进行安装:

pip install tortoise-orm aiosqlite  # 使用 aiosqlite 作为数据库驱动,也可以选择其他支持的数据库

二、配置 Tortoise-ORM

Tortoise-ORM 的配置非常简单,通常在应用启动时进行配置。以下是一个 FastAPI 项目的示例:

from fastapi import FastAPI
from tortoise import Tortoise

app = FastAPI()

@app.on_event("startup")
async def startup():
    await Tortoise.init(
        db_url='sqlite://db.sqlite3',  # 数据库连接 URL
        modules={'models': ['models']}  # 指定模型模块
    )
    await Tortoise.generate_schemas()  # 生成数据库表结构

@app.on_event("shutdown")
async def shutdown():
    await Tortoise.close_connections()

在这个示例中,我们初始化了一个 SQLite 数据库,并指定了模型所在的模块路径。

三、定义模型

在 Tortoise-ORM 中,模型通过继承 tortoise.models.Model 类来定义。以下是一个用户模型的示例:

from tortoise import fields, models

class User(models.Model):
    id = fields.IntField(pk=True)  # 主键
    username = fields.CharField(max_length=50, unique=True)  # 用户名
    email = fields.CharField(max_length=100, unique=True)  # 邮箱
    created_at = fields.DatetimeField(auto_now_add=True)  # 创建时间

    class Meta:
        table = "users"  # 数据库表名

四、基本操作示例

Tortoise-ORM 支持 CRUD 操作。下面是一些基本的示例,展示如何进行数据的创建、读取、更新和删除操作。

1. 创建用户

@app.post("/users/")
async def create_user(username: str, email: str):
    user = await User.create(username=username, email=email)
    return {"id": user.id, "username": user.username, "email": user.email}

2. 获取用户

@app.get("/users/{user_id}")
async def get_user(user_id: int):
    user = await User.get(id=user_id)
    return {"id": user.id, "username": user.username, "email": user.email}

3. 更新用户

@app.put("/users/{user_id}")
async def update_user(user_id: int, username: str, email: str):
    user = await User.get(id=user_id)
    user.username = username
    user.email = email
    await user.save()  # 保存更新
    return {"id": user.id, "username": user.username, "email": user.email}

4. 删除用户

@app.delete("/users/{user_id}")
async def delete_user(user_id: int):
    user = await User.get(id=user_id)
    await user.delete()  # 删除用户
    return {"message": "用户已删除"}

五、总结

Tortoise-ORM 为 Python 的异步应用提供了一个简单易用且功能强大的 ORM 框架。通过以上示例,我们可以看到如何配置和使用 Tortoise-ORM 进行基本的数据库操作。无论是开发小型应用还是大型项目,Tortoise-ORM 都能有效提高开发效率,简化数据持久化过程。希望本文能够帮助你入门 Tortoise-ORM,快速构建出高效的异步应用。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部