TORTOISE_ORM增删改查

作者: adm 分类: python 发布时间: 2025-02-11

Tortoise ORM 是一个异步的 ORM(对象关系映射)库,适用于 Python 的 asyncio 生态系统。它旨在与流行的异步框架如 FastAPI、Quart 等一起使用,并且提供了简单易用的 API 来进行数据库操作,包括增、删、改、查等基本操作。

配置 Tortoise ORM

首先,你需要在项目中配置 Tortoise ORM。这通常涉及到定义模型和配置数据库连接。以下是一个简单的例子:

Python


from tortoise import Tortoise, fields, run_async
from tortoise.models import Model

class User(Model):
    id = fields.IntField(pk=True)
    name = fields.CharField(max_length=50)
    email = fields.CharField(max_length=100)

async def init():
    # 这里配置数据库连接
    await Tortoise.init(
        db_url='sqlite://db.sqlite3',
        modules={'models': ['__main__']}
    )
    # 生成数据库表结构
    await Tortoise.generate_schemas()

# 运行初始化函数
run_async(init())

增 – 创建记录

要向数据库添加新记录,可以创建模型类的新实例并调用 save() 方法或使用 create() 方法。

Python


# 使用 save 方法
user = User(name="John Doe", email="john@example.com")
await user.save()

# 或者使用 create 方法
user = await User.create(name="Jane Doe", email="jane@example.com")

#如果你想通过一个字典来创建对象,可以结合 **kwargs 使用:

data = {"name": "Bob", "email": "bob@example.com"}
user = await User.create(**data)

删 – 删除记录

可以通过查询到特定记录后调用 delete() 方法来删除记录。

Python


# 查询用户
user = await User.get(id=1)
# 删除用户
await user.delete()

你也可以直接根据条件删除记录:

Python


await User.filter(name="John Doe").delete()

改 – 更新记录

更新记录也很简单,修改模型实例的属性值然后调用 save() 方法即可。

Python


# 获取用户
user = await User.get(id=1)
# 修改用户信息
user.email = "john_new_email@example.com"
# 保存更改
await user.save()

或者使用 update() 方法批量更新:

Python

await User.filter(name="John Doe").update(email="new_email@example.com")

查 – 查询记录

Tortoise ORM 提供了多种方法来查询数据库中的数据。

获取单个对象:get()
Python


user = await User.get(id=1)

过滤查询:filter()
Python


users = await User.filter(name__icontains="doe").all()

排序:order_by()
Python


users = await User.all().order_by('name')

限制返回结果数量:limit()
Python


users = await User.all().limit(10)

分页:结合 offset() 和 limit()
Python


page_size = 10
page_number = 2
users = await User.all().offset((page_number - 1) * page_size).limit(page_size)

以上就是使用 Tortoise ORM 进行增删改查的基本操作。Tortoise ORM 还支持更多高级功能,比如事务管理、复杂查询等,具体可以参考Tortoise ORM 官方文档以获取更多信息。如果你有更具体的场景或问题,欢迎进一步询问!

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!