将Python dict与MySQL表连接起来
有没有一种方法可以执行SQL查询,将MySQL表与不在数据库中但在查询中提供的类似dict的结构连接起来 特别是,我经常需要用各自的汇率对从数据库中提取的数据进行后期处理。汇率不存储在数据库中,而是动态检索并临时存储在Python dict中 所以,我有一条规则:汇率={'EUR':1.10,'GBP':1.31,…} 假设某个查询返回如下内容:id、amount、currency\u code将Python dict与MySQL表连接起来,python,mysql,sql,Python,Mysql,Sql,有没有一种方法可以执行SQL查询,将MySQL表与不在数据库中但在查询中提供的类似dict的结构连接起来 特别是,我经常需要用各自的汇率对从数据库中提取的数据进行后期处理。汇率不存储在数据库中,而是动态检索并临时存储在Python dict中 所以,我有一条规则:汇率={'EUR':1.10,'GBP':1.31,…} 假设某个查询返回如下内容:id、amount、currency\u code 是否可以将dict添加到查询中,以便我可以返回:id、金额、货币代码、美元金额?这将消除在Pytho
是否可以将dict添加到查询中,以便我可以返回:id、金额、货币代码、美元金额?这将消除在Python中进行后期处理的需要。此解决方案不使用“连接”,而是通过case语句将Python中的数据组合到SQL中。您可以在python中生成所需的sql,作为一个字符串,在一个巨型case语句中包含这些值 您没有给出任何细节,也没有说明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)
然后将此SQL发送到MySQL
我不喜欢这个解决方案;最终得到的SQL语句非常大,可以达到最大值
另一个想法是在mysql中使用临时表。再次假设您在python中连接到db,使用python创建创建临时表的sql并插入汇率,将其发送到MySQL,然后构建一个将数据连接到该临时表的查询
最后你说你不想用python进行后期处理,但是你有一个来自某处的dict我不知道你在使用哪个环境,但是如果你可以从web上获得这些汇率,比如说使用CURL,那么你可以使用shell将这些值插入MySQL临时表中,并在那里连接
抱歉,这是一般性的,不是具体的,但问题可能需要更具体的说明。希望它能帮助其他人给出更有针对性的答案 谢谢,这很有帮助。