我正在使用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中完成?
Items = SMSQuota.query(??,filter_condition = ??)
答案 0 :(得分:0)
您可以查询包含查询字词的模型,如下所示:
SomeModel.field1 == 'value1' & SomeModel.field2 == 'value2'
有关如何使用pynamodb的更多帮助:http://pynamodb.readthedocs.io/en/latest/quickstart.html
答案 1 :(得分:0)
我一直在尝试类似于@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"))
答案 2 :(得分:0)
我在这里遇到了一个非常相似的问题,我相信您需要的查询与此类似:
# id must be the has_key as you wrote in your model
items = SMSQuota.query(id, filter_condition=((SMSQuota.field1==value1) & (SMSQuota.field2==value2))
我必须确保正确使用括号以避免任何“类型错误:不支持的操作数类型”
最好的问候