ORM语法—查询操作

本文介绍了ORM中的查询操作,包括字段查询的get()、all()、filter()、exclude()和order_by()函数,以及F对象和Q对象在条件比较和逻辑关系中的应用。此外,还探讨了聚合函数如何对查询结果进行聚合操作并返回字典类型的数据。
摘要由CSDN通过智能技术生成

以下函数的使用,通过进入Python脚本(python manage.py shell)进行测试。

1.字段查询

(1)get()函数:返回表中满足条件的一条且只能有一条数据。

>>> from book.models import BookInfo
>>> book = BookInfo.objects.get(id=2)
>>> book.bname

(2)all()函数:返回模型类对应表格中的所有数据。

>>> from book.models import BookInfo
>>> books = BookInfo.objects.all()
>>> for book in books:
...    print(book.bname)   # 注:这里要缩进
...

    注意,这里print前要记得缩进。

(3)filter()函数:返回满足条件的数据。

模型类属性名__条件名 = 值   # 注:双下划线

#条件名:
<1> exact          # 精确定位
<2> contains       # 包含**
<3> endswith       # 以**结尾
<4> startswith     # 以**开头
<5> gt   gte       # 大于   大于等于
<6> lt   lte       # 小于   小于等于
......

 (4)exclude()函数:返回不满足条件的数据。

<
  • 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、付费专栏及课程。

余额充值