首页 > 解决方案 > 如何将巨大的 Python 字典存储到 Postgresql 表中

问题描述

我有这个巨大的 python 列表,我通过网络抓取收集了这些列表。该列表由大约 2,900 个子列表组成。

stockDetailsDict = [
    ("AAPL", 8.82, 86122300.0, 8.8, 9.18, 9.17),
    ("BRK", 4.83, 3286500.0, 4.83, 5.06, 5.06),
    ("JNJ", 727.0, 127470.0, 727.0, 742.0, 740.0),
    ("DIS", 9.52, 12358700.0, 9.36, 9.73, 9.5),
    ...,
]

列表结构分别为股票代码(ticker)、stockCurrentPrice、stockVolume、stockDayLow、stockDayHigh、stockOpen

虽然我的数据库的结构是这样的:

+------------+-------------+-----+-------------+-------+
| Stock Code | Stock Price | Low | High | Open | Close |
+------------+-------------+-----+-------------+-------+
|            |             |     |      |      |       |
|            |             |     |      |      |       |

我的目标:

我正在尝试将此字典保存或存储到我的 postgresql 表(currentDay)中。

我的问题(已编辑):

我可以轻松访问每个密钥,然后使用循环将其一一存储。但问题是,由于它太大(2,900 个子列表),它需要几分钟才能完成,因为它是一个循环。

有没有办法一次性做到这一点,以尽量减少花费的时间?

在评论部分向我指出了executemany这样做的正确方法。所以我为此起草了代码来完成这项工作。

cursor = connection.cursor()

cursor.executemany("INSERT INTO public.stockScrapper_currentday (ticker, stockCurrentPrice, stockVolume, stockDayLow, stockDayHigh, stockOpen) VALUES (%s,%s,%s, %s,%s,%s);", (stockDetailsDict))

但它一直向我返回这个错误:

关系“public.stockscrapper_currentday”不存在 LINE 1: INSERT INTO public.stockScrapper_currentday (ticker, stockCur ...

知道有什么问题吗?

标签: pythonpostgresqllist

解决方案


推荐阅读