Em vez de obter um milhão de linhas do banco de dados e fazer o cálculo em Python, dê seu dicionário ao banco de dados e faça com que o banco de dados faça o cálculo e envie de volta o resultado.
Você pode fazer isso fazendo uma consulta semelhante à seguinte:
SELECT SUM(price * exchange_rate) AS total
FROM sales
LEFT JOIN
(
SELECT 'USD' AS currency, 1.00000 AS exchange_rate
UNION ALL
SELECT 'EUR', 1.32875
UNION ALL
SELECT 'GBP', 1.56718
-- ...
) AS exchange
ON exchange.currency = sales.currency