SQLAlchemy和Tortoise ORM哪个更像django的ORM
时间: 2024-03-29 22:36:58 浏览: 33
在使用方式上,Tortoise ORM 更像 Django 的 ORM。它使用类似 Django ORM 的语法,支持异步 I/O 操作,同时支持多个异步数据库驱动程序,例如 asyncpg、aiosqlite、aiomysql 等。Tortoise ORM 也具有类似 Django ORM 的查询 API,例如 filter()、exclude()、order_by() 等。同时,Tortoise ORM 也支持 Django 风格的模型定义,例如 ForeignKeyField、ManyToManyField 等。
相比之下,SQLAlchemy 更加通用,可以与多种关系型数据库集成,支持多种查询语言,例如 SQL、ORM、Query API 等。但是,SQLAlchemy 的使用方式与 Django ORM 不同,需要编写复杂的查询语句或使用 SQLAlchemy 提供的 ORM API 进行查询操作。因此,如果您想要使用类似 Django ORM 的语法,建议使用 Tortoise ORM。
相关问题
Tortoise-ORM和SQLAlchemy哪个语法更像django
从语法角度来看,Tortoise-ORM 更像 Django 的 ORM。Tortoise-ORM 在语法设计上借鉴了 Django ORM 的一些思路和特点,比如使用 `await` 异步调用 ORM 操作,使用 `filter` 进行条件查询,使用 `values` 进行字段筛选等等。同时,Tortoise-ORM 也提供了 Django ORM 所没有的一些异步操作特性,比如支持异步事务等。
相比之下,SQLAlchemy 的语法虽然也可以与 Django ORM 相似,但更加灵活和自由,更加适合需要进行复杂 SQL 操作的场景。而 Django ORM 更加注重快速开发和易用性,适合中小型项目。
SQLAlchemy和Tortoise ORM查询语法对比
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 操作。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)