繁体   English   中英

我可以对 SQLAlchemy 进行动态比较吗?

[英]Can I do a dynamic comparison on SQLAlchemy?

我有这个模型:

class PUC(Base):
   pucId = Column(Integer, primary_key=True)
   asset = Column(TINYINT)
   article = Column(TINYINT)
   more values ...
   more values ...

我需要动态地做一个查询(我试过这种方式):

pucs = session.query(PUC).filter(PUC[unique_by_param] == 1).all()

unique_by_param的值来自前端。 unique_by_param一个例子是: {str}'asset' , {str}'article' , {str}'another_model_value'

我真正需要的是一种方法。 session.query(PUC).filter(PUC.asset == 1)session.query(PUC).filter(PUC.article == 1)动态,就像我尝试的第一种方式。

使用 ( PUC[unique_by_param] ) 的结果是TypeError: 'DeclarativeMeta' object is not subscriptable

我以前使用过一种方法,但不是很好的方法,但也不是很好的方法:

# this is a accounting table, so this have around 250 columns 
#and this special columns be around 70 variables... 
#So this isn't an option o do this.
if unique_by_param == 'asset':
    q = (PUC.asset == 1)
elif unique_by_param == 'article':
    q = (PUC.article)
elif ...more values:

pucs = session.query(PUC).filter(or_(*q))

这是一种使用filter_by关键字参数解包的方法

keyword = {unique_by_param : 1}
session.query(PUC).filter_by(**keyword).all()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM