SQLAlchemy Core和ORM

SQLAlchemy Core,先创建一个元数据容器,然后声明一个与该元数据相关联的Table对象。

SQLAlchemy ORM,定义一个类,它继承自一个名为declarative_base的特殊基类。declarative_base把元数据容器和映射器(用来把类映射到数据表)结合在一起。如果类的实例已经保存,declarative_base还会把类的实例映射到表中的记录。

ORM使用的类,需要满足四个要求:
1.继承自declarative_base对象

2.包含__tablename__,这是数据库中使用的表名

3.包含一个或多个属性,它们都是Column对象

4.确保一个或多个属性组成主键

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 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、付费专栏及课程。

余额充值