Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Python dict与MySQL表连接起来_Python_Mysql_Sql - Fatal编程技术网

将Python dict与MySQL表连接起来

将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

有没有一种方法可以执行SQL查询,将MySQL表与不在数据库中但在查询中提供的类似dict的结构连接起来

特别是,我经常需要用各自的汇率对从数据库中提取的数据进行后期处理。汇率不存储在数据库中,而是动态检索并临时存储在Python dict中

所以,我有一条规则:汇率={'EUR':1.10,'GBP':1.31,…}

假设某个查询返回如下内容:id、amount、currency\u code


是否可以将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临时表中,并在那里连接


抱歉,这是一般性的,不是具体的,但问题可能需要更具体的说明。希望它能帮助其他人给出更有针对性的答案

谢谢,这很有帮助。