gpt4 book ai didi

python - 将 Python dict 与 MySQL 表连接起来

转载 作者:行者123 更新时间:2023-11-29 02:48:45 29 4
gpt4 key购买 nike

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

特别是,我经常需要使用相应的汇率对从数据库中提取的数据进行后处理。汇率不存储在数据库中,而是即时检索并临时存储在 Python 字典中。

所以,我有一个字典:exchange_rates = {'EUR': 1.10, 'GBP': 1.31, ...}。

假设一些查询返回类似:id、amount、currency_code。

是否可以将字典添加到查询中以便我可以返回:id、amount、currency_code、usd_amount?这将消除在 Python 中进行后处理的需要。

最佳答案

此解决方案不使用“连接”,而是通过 case 语句将来自 Python 的数据组合到 SQL 中。您可以在 python 中生成所需的 sql(作为字符串),将这些值包含在一个巨大的 case 语句中。

您没有提供任何细节,也没有说明是哪个版本的 Python,因此很难提供有用的代码。但这适用于 Python 2.7,并假设您与 Python 中的 MySQL 数据库有某种连接:

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 语句,它可以达到最大值(What is maximum query size for mysql?)。

另一个想法是在mysql中使用临时表。再次假设您在 python 中连接到数据库,使用 python 创建创建临时表的 sql 并插入汇率,将其发送到 MySQL,然后构建一个将您的数据连接到该临时表的查询。

最后你说你不想在 python 中进行后处理但是你有来自某个地方的命令我不知道你使用的是哪个环境但是如果你可以从网络上获得这些汇率,比如使用 CURL ,然后您可以使用 shell 将这些值也插入到 MySQL 临时表中,并在那里加入。

抱歉,这是笼统的而不是具体的,但是这个问题可以使用更具体的。希望它能帮助别人给出更有针对性的答案。

关于python - 将 Python dict 与 MySQL 表连接起来,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38537855/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com