如何在SQLAlchemy中查询with_entities(list)?

时间:2019-01-16 14:32:32

标签: python sqlalchemy

我正在寻找一种查询一组选定的属性(可能在一个函数中)的方法,以便可以在创建用于分类的ML模型时尝试使用不同的属性集。

以下内容当前有效,但并非如我所愿地动态。我当然可以为每个测试内联键入每个想要的属性,但这不适用于网格搜索不同的属性集等。

peak_info = (session.query(Peak, LogFile).join(NmhcLine).join(GcRun)
         .join(LogFile).filter(LogFile.date > datetime(2019,1,1))
         .with_entities(Peak.pa, Peak.rt, LogFile.GCHeadP).all())

联接的数量只是为了强制将某种级别的质量控制应用于我模型中的更高对象,而日期过滤器则是将结果的数量限制在合理的数量以进行测试。这将返回一个很好的三元组结果,我将其放入3xn数据帧中。

我想做的是提供Peak和Logfile类的属性列表,这样我可以使最后一行像这样:

.with_entities([peak_attr1, peak_attr2], [logfile_attr1, etc]).all())

如果有更好的方法可以实现这一目标,那么我就不依赖于with_entities()了,假设结果必须易于解析为数据帧即可。

编辑:

arglist = [getattr(LogFile, 'date'), Peak.pa, Peak.rt, LogFile.GCHeadP]

peak_info = (session.query(Peak, LogFile).join(NmhcLine).join(GcRun)
             .join(LogFile).filter(LogFile.date > datetime(2019,1,1))
             .join(Datum).filter()
             .with_entities(*arglist).all())

感谢J.J. Hakala的评论我可以使用两种用于指定显示属性的不同方法来完成上述工作。我想知道我是否只是缺少一些Python解决方案,这就是为什么SQLAlchemy特有的问题没有将我引到任何地方的原因。谢谢!

0 个答案:

没有答案