【问题标题】:"Injecting" Dictionary Data from foreign database into SQLAlchemy Object将外部数据库中的字典数据“注入”到 SQLAlchemy 对象中
【发布时间】:2016-12-19 11:08:53
【问题描述】:

我正在制作一个机器学习模型的原型,以便为对象生成“排序数据”。对象存储在 mysql db 中,可通过 SQLAlchemy 抽象层访问。现在我想通过我从第二台服务器(ML 正在运行的地方)提取的数据来过滤和排序这些数据。

到目前为止,我已经设法通过将从 ML 服务器中提取的 id 添加到 IN Filter 语句来过滤数据:

.filter(Job.id.in_(list(sum(ai_match, ()))))

而 ai_match 是从 ML 服务器中提取的 id 元组。这工作正常,但我想在 ML 服务器中按 similarityalso 对列表进行排序。从 SQL 的角度来看,这只是两个数据库的内部连接:

`SELECT * FROM jobs 
INNER JOIN mlserver.matches ON mlserver.matches.job_id = jobs.id`

但是 ML Server 不是 SQL Alchemy 对象,我不想创建一个(因为该项目相当庞大且非常复杂,我自己没有能力深入研究整个项目结构)。

这让我想到了这个问题: 如何将数据“注入”到现有的 SQL Alchemy 对象中,以便在格式为 [(job_id, similarity),]

的字典上实现所需的 JOIN

感谢您的帮助!

【问题讨论】:

    标签: python mysql flask sqlalchemy


    【解决方案1】:

    如果您无法创建 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)
    

    【讨论】:

      猜你喜欢
      • 2018-06-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-01-24
      • 2018-11-22
      • 1970-01-01
      • 1970-01-01
      • 2015-04-14
      相关资源
      最近更新 更多