我正在使用SQLAlchemy声明基础来定义我的模型.我定义了name一个从列(title)计算的属性:
class Entry(Base):
__tablename__ = "blog_entry"
id = Column(Integer, primary_key=True)
title = Column(Unicode(255))
...
@property
def name(self):
return re.sub(r'[^a-zA-Z0-9 ]','',self.title).replace(' ','-').lower()
Run Code Online (Sandbox Code Playgroud)
尝试使用时执行查询name,SQLAlchemy会抛出错误:
Session.query(Entry).filter(Entry.name == my_name).first()
>>> ArgumentError: filter() argument must be of type sqlalchemy.sql.ClauseElement or string
Run Code Online (Sandbox Code Playgroud)
经过一段时间的调查,我发现可能comparable_using()会有所帮助,但我找不到任何显示比较器引用该表另一列的示例.
这是可能的还是有更好的方法?