Tortoise ORM 是一个非常流行且轻量级的异步ORM(对象关系映射)库,特别适用于Python的异步编程。它的设计目标是简化数据库操作,将Python对象与关系型数据库中的行进行映射,从而使开发者能够更加直观地进行数据操作。Tortoise ORM 支持多种数据库,包括 SQLite、PostgreSQL 和 MySQL。
1. 安装 Tortoise ORM
要使用 Tortoise ORM,首先需要安装该库和数据库驱动。例如,如果您使用 PostgreSQL,您可以使用以下命令进行安装:
pip install tortoise-orm asyncpg
对于 SQLite,您可以使用:
pip install tortoise-orm aiosqlite
2. 基本用法
Tortoise ORM 的使用通常涉及三个主要步骤:定义模型、配置数据库并执行操作。以下是一个简单的示例,展示如何使用 Tortoise ORM 创建和查询数据。
1. 定义模型
首先,您需要定义模型类。在 Tortoise ORM 中,模型类通常继承自 tortoise.models.Model
,并使用字段定义数据库表的结构。
from tortoise import fields, models
from tortoise.contrib.pydantic import pydantic_model_creator
class User(models.Model):
id = fields.IntField(pk=True)
username = fields.CharField(max_length=50)
email = fields.CharField(max_length=100)
created_at = fields.DatetimeField(auto_now_add=True)
# 生成 Pydantic 模型
User_Pydantic = pydantic_model_creator(User)
2. 配置数据库
接下来,需要配置数据库和初始化 Tortoise ORM。可以使用异步上下文管理器来确保在执行数据库操作时连接和断开数据库。
from tortoise import Tortoise, run_async
async def init():
await Tortoise.init(
db_url='sqlite://db.sqlite3', # 使用 SQLite 数据库
modules={'models': ['__main__']} # 指定模型模块
)
await Tortoise.generate_schemas()
async def close():
await Tortoise.close_connections()
3. 执行操作
现在,您可以执行一些基本的数据库操作,如创建和查询记录。
async def run():
await init()
# 创建用户
user = await User.create(username='testuser', email='test@example.com')
print(f'新用户创建: {user.username}, {user.email}')
# 查询用户
users = await User.all()
for user in users:
print(f'用户: {user.username}, 邮箱: {user.email}')
await close()
run_async(run())
3. 更复杂的查询
Tortoise ORM 还支持复杂的查询,类似于 SQLAlchemy 的查询表达式。您可以通过 .filter()
、.order_by()
和 .prefetch_related()
等方法进行过滤和排序。
async def complex_query():
users = await User.filter(username__startswith='test').order_by('created_at')
for user in users:
print(user.username)
4. 结论
Tortoise ORM 的设计使得在 Python 中进行异步数据库操作变得简单高效。通过定义模型、配置数据库和执行操作,可以快速构建出功能完善的数据库应用。无论您是构建小型项目还是复杂的Web应用,Tortoise ORM 都是一个非常不错的选择。它的文档全面且易于理解,社区支持也相当活跃,是开发者们不可或缺的工具之一。