Django和SQLAlchemy,哪个Python ORM更好?

原文Django vs SQLAlchemy – Which Python ORM is better?
作者:EverSQL团队
翻译:雁惊寒

译者注:本文首先介绍了什么是ORM,然后从多个方面对Python语言下的两个ORM库Django和SQLAlchemy进行比较,为ORM的选型提供了较为全面的指导建议。以下是译文。

ORM是什么?

在介绍Python下的两个ORM框架(Django和SQLAlchemy)的区别之前,我们首先要充分了解ORM框架的用途。

ORM代表对象关系映射。ORM中的每个单词解释了他们在实际项目中的用途:

  • 对象(Object):这部分表示哪个对象或者在哪种编程语言下使用这个框架,例如Python。
  • 关系(Relational):这部分表示你正在使用的RDBMS数据库(关系数据库管理器系统)。有许多流行的关系数据库,你可能使用以下这些:MSSQL、MySQL、Oracle、PostgreSQL、MariaDB、PerconaDB、TokuDB。关系数据库中最常见的是它们的关系结构(表,列,键,约束等)。
  • 映射(Mapping)
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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、付费专栏及课程。

余额充值