このソリューションは 'join'を使用しませんが、Pythonのデータをcase文を介してSQLに結合します。あなたは、巨大なcase文でこれらの値を含むPythonで(文字列として)必要なsqlを生成することができます。
あなたは詳細を教えておらず、どのバージョンのPythonを使っているのかわからないので、役に立つコードを提供するのは難しいです。しかし、これは、Python 2.7で動作し、あなたがPythonでMySQLのDBへのいくつかの接続を持っている前提としています。そして、
exchange_rates = {'EUR': 1.10, 'GBP': 1.31, ...}
# create a long set of case conditions as a string
er_case_statement = "\n".join("mytable.currency = \"{0}\" then {1}".format(k,v) for (k,v) in exchange_rates.iteritems())
# build the sql with these case statements
sql = """select <some stuff>,
case {0}
end as exchange_rate,
other columns
from tables etc
where etc
""".format(er_case_statement)
MySQLの
にこのSQLを送って、私はこのソリューションを好きではありません。最大限に達することができる非常に大きなSQL文で終わります(What is maximum query size for mysql?)。
別のアイデアは、mysqlで一時テーブルを使用することです。 PythonでPythonでdbに接続していると仮定すると、一時テーブルを作成し、為替レートを挿入してMySQLに送信し、その一時テーブルにデータを結合するクエリを作成するsqlを作成します。
最後に、あなたはPythonで後処理したくないと言っていますが、あなたはどこの環境かを知っていないのですが、これらの交換レートをウェブから得ることができればCURLを使用すると、シェルを使用してこれらの値をMySQLの一時テーブルに挿入してそこに参加することもできます。
申し訳ありませんが、これは一般的で具体的ではありませんが、問題はより具体性があります。他の人がよりターゲットを絞った答えを出すのを助けることを願っています
ありがとう、とても助かりました。 – chrisvdb