tortoise orm优缺点和基本增删改查操作

Tortoise ORM的优缺点及基本增删改查操作

一、Tortoise ORM优点

  1. 异步支持:Tortoise ORM基于异步语法,能够支持高度并发,非常适合异步应用,从而提高了应用程序的性能和响应速度。
  2. 易用性强:Tortoise ORM提供了类似于Django ORM的语法,使用简单,同时支持丰富的插件,进一步增强了其易用性和可扩展性。
  3. 灵活性和可扩展性:Tortoise ORM将Model编写从数据库分离出来,便于代码重构,同时支持多种数据库,包括异步数据库,使得开发者可以根据业务需求灵活选择。

二、Tortoise ORM缺点

  1. 相对较新:相比一些成熟的ORM框架,Tortoise ORM的生态可能还不够完善,社区支持和文档可能相对较少。
  2. 学习成本:虽然Tortoise ORM易用性强,但对于没有接触过异步编程或ORM框架的开发者来说,可能需要一定的学习成本。

三、基本增删改查操作

  1. 增(Create):使用Tortoise ORM创建新记录非常简单。首先,定义一个继承自tortoise.models.Model的模型类,并在其中定义字段。然后,创建一个该模型类的实例,并为其字段赋值。最后,调用实例的save()方法将其保存到数据库中。例如:user = User(username='john', password='123456')await user.save()
  2. 查(Retrieve):Tortoise ORM提供了多种查询方式,包括filter()get()all()等。filter()方法用于根据条件过滤记录,返回一个查询集(QuerySet),可以使用链式查询进一步细化结果。get()方法用于获取单条记录,如果查询到多条记录会抛出异常。all()方法用于获取所有记录。例如:users = await User.filter(username__startswith='j')user = await User.get(id=1)all_users = await User.all()
  3. 改(Update):使用Tortoise ORM更新记录也很方便。可以通过filter()方法找到需要更新的记录,然后调用update()方法并传入要更新的字段和值。例如:await User.filter(id=1).update(password='new_password')。这将把id为1的用户的密码更新为“new_password”。
  4. 删(Delete):删除记录同样简单。使用filter()方法找到需要删除的记录,然后调用delete()方法即可。例如:await User.filter(id=2).delete()。这将删除id为2的用户记录。需要注意的是,删除操作是不可逆的,因此执行前请确保已备份数据或确认不再需要这些数据。
SQLAlchemy Tortoise ORM 在查询语法上有一些不同。 SQLAlchemy 的查询语法基于 SQL 语句,可以使用 SQL 的各种特性语法,例如 SELECT、FROM、WHERE、ORDER BY、GROUP BY 等。同时,SQLAlchemy 还提供了 ORM API Query API,可以方便地进行对象关系映射查询操作Tortoise ORM 的查询语法则更类似于 Django ORM,它使用类似 Django ORM 的语法,例如 filter()、exclude()、order_by() 等。同时,Tortoise ORM 还支持异步 I/O 操作,可以使用 async/await 语法进行异步查询操作。 以下是两个 ORM 的查询语法对比: **SQLAlchemy 查询语法示例:** ```python from sqlalchemy import create_engine, Column, Integer, String from sqlalchemy.orm import sessionmaker engine = create_engine('sqlite:///example.db') Session = sessionmaker(bind=engine) session = Session() class User(Base): __tablename__ = 'users' id = Column(Integer, primary_key=True) name = Column(String) age = Column(Integer) # 使用 SQL 语句进行查询 result = session.query(User).filter(User.age >= 18).order_by(User.name.desc()).all() # 使用 ORM API 进行查询 result = session.query(User).filter_by(name='John').first() # 使用 Query API 进行查询 result = session.query(User).filter(User.name.like('%John%')).all() ``` **Tortoise ORM 查询语法示例:** ```python from tortoise import fields from tortoise.models import Model class User(Model): id = fields.IntField(pk=True) name = fields.CharField(max_length=255) age = fields.IntField() # 使用 filter()、exclude()、order_by() 等方法进行查询 result = await User.filter(age__gte=18).order_by('-name').all() # 使用异步 I/O 进行查询 result = await User.filter(name='John').first() # 使用原生 SQL 进行查询 result = await User.raw('SELECT * FROM users WHERE name LIKE ?', ['%John%']) ``` 总的来说,SQLAlchemy 更加通用,支持多种查询语言,同时还提供了 ORM API Query API;而 Tortoise ORM 则更类似 Django ORM,使用类似 Django ORM 的语法进行查询,并支持异步 I/O 操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值