python-SQLAlchemy:混合值对象,查询元组结果
作者:互联网
我正在尝试遵循有关使用混合值对象构建custom comparators的文档中的示例,
class CaseInsensitiveWord(Comparator):
"Hybrid value representing a lower case representation of a word."
def __init__(self, word):
if isinstance(word, basestring):
self.word = word.lower()
elif isinstance(word, CaseInsensitiveWord):
self.word = word.word
else:
self.word = func.lower(word)
def operate(self, op, other):
if not isinstance(other, CaseInsensitiveWord):
other = CaseInsensitiveWord(other)
return op(self.word, other.word)
def __clause_element__(self):
return self.word
def __str__(self):
return self.word
key = 'word'
"Label to apply to Query tuple results"
但是,我不明白为什么要将它添加到类定义的末尾:
key = 'word'
"Label to apply to Query tuple results"
这个是来做什么的?
解决方法:
虽然这不是Python的完整功能,但惯例是以与函数和方法相同的方式注释属性,即在属性下方放置一个字符串.像上面的评论是由Sphinx之类的工具获取的.您可以看到在诸如http://www.sqlalchemy.org/docs/orm/mapper_config.html#sqlalchemy.orm.mapper.Mapper.class_manager之类的位置生成这些文档字符串的示例.
编辑:哦,为什么它有一个实际的“ .key”.当你说:
for row in session.query(MyClass.mycustomthing, MyClass.myothercustomthing):
print row.word, row.someotherword
“ word”和“ someotherword”元组键是每个比较器上“ .key”的值.如果要在其上调用label(),则会将其更改为其他内容.我不知道根本没有必要在那儿.
标签:pylons,sqlalchemy,python 来源: https://codeday.me/bug/20191208/2089243.html