Python中的ORM框架Tortoise ORM详解
Python是一种不可或缺的编程语言,随着其不断发展,许多功能强大的工具和框架也应运而生。其中,ORM(对象关系映射)框架在Python开发中具有重要意义。Tortoise ORM是Python中的一种ORM框架,它基于异步语法,具有非常高的性能和可扩展性。本文将详细介绍Tortoise ORM的特点和基本用法。
- 什么是ORM框架?
ORM框架是一种将面向对象编程语言中的数据对象映射至关系数据库的技术。ORM通过数据对象模型来提升开发效率,使得开发者可以使用面向对象的编程接口操作关系数据库,而不需要手写SQL语句,通过面向对象的方式进行数据处理。
- Tortoise ORM的特点
Tortoise ORM是基于Python 3.6+ language的异步ORM库。下面是Tortoise ORM的主要特点:
(1) 效率高:Tortoise ORM采用异步语法,能够支持高度并发,性能非常出色。
(2) 易用性强:Tortoise ORM使用简单,支持类似于Django ORM的语法,提供了一整套ORM模型(Meta类)。
(3) 易扩展:为了更好的扩展性,Tortoise ORM将Model编写从数据库分离出来,这样我们可以更方便的进行代码重构。
(4) 插件丰富:Tortoise ORM支持许多第三方插件,如异步ElasticSearch、PostgreSQL、Aiopg、PgAmdin、AsyncSSH、APscheduler、AIOCache等等。
- 如何使用Tortoise ORM
首先,我们先需要一个MySQL数据库和PyMySQL驱动程序。如果您还没有安装MySQL数据库和PyMySQL驱动程序,可以使用以下命令进行安装:
pip install pymysql
如果您的MySQL服务器没有打开ssl,请安装标志 -use-optionssl = True,以使用SSH加密连接:
pip install pymysql[ssl]
接下来,我们要安装Tortoise ORM及其依赖项:
pip install tortoise-orm
为了使用Tortoise ORM,我们需要创建一个Tortoise ORM对象。在这个对象中,我们可以指定连接数据库的URL,用户名,密码和数据库名。例如:
from tortoise import Tortoise TORTOISE_ORM = { "connections": {"default": "mysql://user:password@127.0.0.1:3306/test_db"}, "apps": { "models": { "models": ["__main__"], "default_connection": "default", }, }, } async def init_orm(): await Tortoise.init(TORTOISE_ORM) await Tortoise.generate_schemas() asyncio.run(init_orm())
这里,我们定义了一个TORTOISE_ORM字典,其中指定了数据库连接的URL和应用程序列表(在这种情况下,我们只使用__main__模块)。然后,我们创建了一个init_orm函数,在其中初始化Tortoise对象,并生成数据库架构。
接下来,我们可以定义一个数据库模型(Model),它是一个Python类,并且需要继承Tortoise中所提供的Model。例如:
from tortoise import fields, models class User(models.Model): id = fields.IntField(pk=True) username = fields.CharField(50, unique=True) password = fields.CharField(128) created_at = fields.DatetimeField(auto_now_add=True) updated_at = fields.DatetimeField(auto_now=True)
在这里,我们定义了一个User模型,它有一个id字段,一个用户名字段,一个密码字段,以及两个时间戳字段(创建时间和更新时间)。需要注意的是,我们的id 字段需要使用pk=True来指定主键。
现在,我们可以使用ORM模型访问数据库。例如,如果我们要插入一个新的User到数据库中,我们可以使用以下代码:
async def create_user(username: str, password: str) -> User: user = User(username=username, password=password) await user.save() return user
在这里,我们先创建了一个User对象,然后调用save()方法将其保存到数据库中,最后返回User对象。我们还可以使用以下代码从数据库中检索User:
async def get_user_by_username(username: str) -> Union[None, User]: return await User.filter(username=username).first()
在这里,我们可以使用User类的filter方法按用户名查找用户,然后调用first()方法来返回第一个匹配结果。
- Tortoise ORM插件
作为一个开放和灵活的ORM框架,Tortoise ORM支持许多插件。下面是一些插件的简介:
(1) tortoise-orm[elastic]:支持异步Elasticsearch。
(2) tortoise-orm[asyncpg]:PostgreSQL数据库支持。
(3) tortoise-orm[aiopg]:AioPg数据库支持。
(4) tortoise-orm[admin]:可视化界面和管理工具。
(5) tortoise-orm[sqlite]:SQLite数据库支持。
(6) tortoise-orm[aiofiles]:文件存储支持。
(7) tortoise-orm[aioredis]:Redis数据库支持。
(8) tortoise-orm[asyncssh]:SSH客户端和服务端支持。
(9) tortoise-orm[aiohttp]:使用aiohttp库的Web框架支持。
这些插件可以根据你的业务需求随意挑选。你可以选择使用Tortoise ORM,以及适合你的业务需求的插件来提高你的开发效率。
- 总结
Tortoise ORM是一种性能出色且易用的ORM库,功能强大,具有良好的扩展性和插件机制。它采用异步语法,可以支持高度并发。同时,Tortoise ORM还提供了类似于Django ORM一样的语法,使用简单。在Python应用程序中,它可以大大提高开发效率,并且可以帮助应用程序与数据库进行更高效的交互。
以上就是Python中的ORM框架Tortoise ORM详解的详细内容,更多请关注其它相关文章!