我使用的是PynamoDB和Flask,我想用field1=value1 and field2=value2这样的查询来查询对象。
这里的field1和field2的类型是NumberAttribute()。
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 = ??)
发布于 2017-12-19 23:21:09
您可以组合查询条件来查询模型,如下所示:
SomeModel.field1 == 'value1' & SomeModel.field2 == 'value2'有关如何使用pynamodb的更多帮助,请单击此处:http://pynamodb.readthedocs.io/en/latest/quickstart.html
发布于 2020-01-23 06:22:33
正如@Delvidi提到的,我一直在尝试类似于文档中所示的查询,但它一直抛出一个TypeError。
TypeError: unsupported operand type(s) for &: 'bool' and 'UnicodeAttribute'示例显示:SomeModel.field1 == 'value1' & SomeModel.field2 == 'value2'
但是,如果您进一步查看文档中的Conditional Expressions,就会发现必须要有一个括号。所以..。
results = MyModel.query(user, (MyModel.field1 == True) & (MyModel.field2 == "a"))发布于 2021-07-13 22:51:51
我在这里遇到了一个非常类似的问题,我相信您需要的查询与以下内容类似:
# 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:不支持的操作数类型“
诚挚的问候
https://stackoverflow.com/questions/47883846
复制相似问题