簡體   English   中英

Python - 將 JSON 列表寫入 Mongo DB

[英]Python - Write JSON List to Mongo DB

我的腳本從 websocket 獲得響應,響應包含字典和列表,我需要列表。 然后我需要將列表保存到 mongodb。 我雖然我可以使用 dict(zip) 將列表轉換為 dict 但我收到此錯誤: TypeError: unhashable type: 'list'

代碼:

import json, time
import pandas as pd
import pymongo
from pymongo import MongoClient
from websocket import create_connection

if __name__ == '__main__':
    
    db_name = 'KTDB'
    db_collect = 'crypto_data'
    client = MongoClient('localhost', 27017)
    mydb = client[db_name]   
    
    ws = create_connection("wss://ws.kraken.com/") 
    ws.send(json.dumps({
        "event": "subscribe",
        "pair": ["BTC/USD"],
        "subscription": {"name": "trade"}
    }))

    timeout = time.time() + 60*1

    while time.time() < timeout:
        
        js = json.loads(ws.recv())
          
        if isinstance(js, list): 
            print(js)      

            jd = zip(range(len(js)), js)                

            #jd=dict(zip(js,range(len(js))))
            mydb[db_collect].insert_many(jd) 
            #mydb[db_collect].insert_one({"test": 'check'}) 

ws回應:

[321, [['47426.40000', '0.01799527', '1613158549.286001', 's', 'l', '']], 'trade', 'XBT/USD'] 

MongoDB 本質上是一個鍵/值對存儲。 它可以存儲列表,但只能作為鍵/值對的值的一半。

因此,要實現存儲列表的目標,請創建一個鍵(dict)並將列表存儲為一個值。

if isinstance(js, list):
    mydb[db_collect].insert_one({'my_list': js})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM