首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在pynamodb ORM中使用多个where条件

如何在pynamodb ORM中使用多个where条件
EN

Stack Overflow用户
提问于 2017-12-19 17:33:08
回答 3查看 2.8K关注 0票数 1

我使用的是PynamoDB和Flask,我想用field1=value1 and field2=value2这样的查询来查询对象。

这里的field1field2的类型是NumberAttribute()

代码语言:javascript
复制
from pynamodb.models import Model
from pynamodb.attributes import UnicodeAttribute, NumberAttribute,UTCDateTimeAttribute

class SMSQuota(Model):
    id = UnicodeAttribute(hash_key=True)
    user_id = NumberAttribute(null=True)
    sms_quota = NumberAttribute()
    validity_date = UTCDateTimeAttribute(null=True)
    class Meta:
        table_name = 'SMSQuota'
        region = 'us-west-2'
        write_capacity_units = 1
        read_capacity_units = 1

在PynamoDB ORM中如何做到这一点呢?

项目= SMSQuota.query( ??,filter_condition = ??)

EN

回答 3

Stack Overflow用户

发布于 2017-12-19 23:21:09

您可以组合查询条件来查询模型,如下所示:

代码语言:javascript
复制
SomeModel.field1 == 'value1' & SomeModel.field2 == 'value2'

有关如何使用pynamodb的更多帮助,请单击此处:http://pynamodb.readthedocs.io/en/latest/quickstart.html

票数 0
EN

Stack Overflow用户

发布于 2020-01-23 06:22:33

正如@Delvidi提到的,我一直在尝试类似于文档中所示的查询,但它一直抛出一个TypeError

代码语言:javascript
复制
TypeError: unsupported operand type(s) for &: 'bool' and 'UnicodeAttribute'

示例显示:SomeModel.field1 == 'value1' & SomeModel.field2 == 'value2'

但是,如果您进一步查看文档中的Conditional Expressions,就会发现必须要有一个括号。所以..。

代码语言:javascript
复制
results = MyModel.query(user, (MyModel.field1 == True) & (MyModel.field2 == "a"))
票数 0
EN

Stack Overflow用户

发布于 2021-07-13 22:51:51

我在这里遇到了一个非常类似的问题,我相信您需要的查询与以下内容类似:

代码语言:javascript
复制
# id must be the has_key as you wrote in your model
items = SMSQuota.query(id, filter_condition=((SMSQuota.field1==value1) & (SMSQuota.field2==value2))

我必须确保我正确地使用了括号,以避免任何"TypeError:不支持的操作数类型“

诚挚的问候

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47883846

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档