2016-12-19 20 views
2

オブジェクトの「ソートデータ」を生成するための機械学習モデルをプロトタイプ作成しています。オブジェクトは、SQLAlchemy抽象化層を介してアクセスされるmysql dbに格納されます。今私は、フィルタリングし、私は2番目のサーバー(MLが実行されている)から取得するデータを介してこのデータをソートしたいと思います。外国データベースの辞書データをSQLAlchemyオブジェクトに「注入」

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

ai_matchは、IDのMLサーバーからプルのタプルであるのに対し:

は、これまでのところ私は、IDのフィルタ文でのML-サーバから引き出さ追加することにより、データをフィルタリングするために管理しています。これは正常に動作しますが、MLサーバーでも​​でリストをソートしたいと思います。 ML ServerはSQL錬金術オブジェクトではなく、私はこのプロジェクトは非常にかなり大規模な、そのまま(1を作成したくないしかし

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

:SQLの観点から、これはちょうど、内側の2つのデータベースに参加するだろう複雑なプロジェクト構造全体に深く関わっているわけではありません)。質問に私をリード

: 私はexistin SQL錬金術オブジェクトへのデータは、そのフォーマットのあなたの助けのための[(job_id, similarity),]

おかげだろう辞書に登録しよ希望acheiveする「注入」することができますどのように!

答えて

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) 
関連する問題