我正在制作一个机器学习模型的原型,为对象生成“排序数据”。这些对象存储在通过SQLAlchemy抽象层访问的mysql中。现在,我想通过从第二个服务器(运行ML的服务器)获取的数据对这些数据进行过滤和排序。
到目前为止,我已经成功地通过将从ML-server拉出的id添加到IN filter语句来过滤数据:
.filter(Job.id.in_(list(sum(ai_match, ()))))而ai_match是从ML服务器中提取的id的元组。这工作得很好,但我想按ML服务器中的similarity对列表进行排序。从SQL的角度来看,这只是两个数据库之间的内部连接:
`SELECT * FROM jobs
INNER JOIN mlserver.matches ON mlserver.matches.job_id = jobs.id`然而,ML Server不是SQL Alchemy对象,我不想创建一个(因为这个项目相当庞大和非常复杂,而且我自己没有能力深入了解整个项目结构)。
这就引出了一个问题:如何将数据“注入”到现有的SQL Alchemy对象中,以便在[(job_id, similarity),]格式的字典上获得所需的连接
谢谢你的帮忙!
发布于 2016-12-19 23:41:48
如果不能创建SQLAlchemy对象,最简单的选择可能是使用存储在字典中的相似性信息对查询后的结果进行排序:
# get sqlalchemy results
results = Job.query.filter(Job.id.in_(list(sum(ai_match, ())))).all()
# dict of id/value you want to sort on
ai_similarity = {x.id: x.value for x in ai_similarity_source}
# imagine you'd want to use try/except on KeyError here
results.sort(key=lambda x: ai_similarity[x.id], reverse=True)https://stackoverflow.com/questions/41221276
复制相似问题