我正在使用Redis对象映射器(ROM)here。在
这是我的模型
class User(rom.Model):
name = rom.String(required=True, unique=True)
nickname = rom.String(required=False)
photo = rom.String(required=False)
我在努力-
user1 = User(name="Ankush", nickname="iamkhush",
photo='http://graph.facebook.com/iamkhush/picture')
user1.save()
我知道了就知道结果了
user = User.get(1) #user is a model instance
但当我这么做的时候
user_obj = User.query.filter(name='Ankush').execute()
我得到[](一个空结果)
不明白为什么会这样?在
这有两个部分。首先,如果您想通过使用
unique=True
定义的列来获取项,则不需要使用索引,但是查询是不同的。{{cd3>可以使用cd3}形式得到:主要的限制是您必须按照列中的定义准确传递整列。这对于保持电子邮件地址的唯一性非常有用(请先将其小写!),用户名(注意大写)和其他示例。在
第二部分是,当启用索引时,索引对字符串/文本列具有“不区分大小写的唯一单词包”语义(我来自世界各地的搜索引擎,它的语义与典型的数据库查询有着本质上不同(而且可以说更好)的语义)。因此,如果要查找条目,需要使用:
^{pr2}$(还要注意,
.execute()
是.all()
的别名)。在如果要更改使用
index=True
定义的列的区分大小写或其他行为,则需要传递一个自定义keygen参数(可以在rom.String
和rom.Text
键生成语义的rom.util._string_keygen()
在https://github.com/josiahcarlson/rom/blob/master/rom/util.py#L149处)。在您需要将index=True和name一起传递,以允许过滤器查询它。在
相关问题 更多 >
编程相关推荐