且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

错误:使用 pymongo (pandas) 将 CSV 文件导入 mongoDB

更新时间:2022-11-02 21:04:33

您向 read_csv() 传递了不正确的参数.如果您不指定参数名称,它们将按顺序传递 根据文档.

您可能可以通过以下方式解决问题:

df = pd.read_csv(path, parse_dates=parse_dates, dtype=dtype, skiprows=skiprows)

I have a little code that I want to use to import data. But I just can't specify the attributes for pd.read_csv. Made based on video on ***. Absolutely new to this, if you fix the code, I will be very grateful.

My error


Collection:  Confirmed_global_narrow
Traceback (most recent call last):

AttributeError: list' object has no attribute 'encode'

PLS, what am I doing wrong?

try:
    import pymongo
    from pymongo import MongoClient
    import pandas as pd
    import json
except Exception as e:
    print("Some Modules are Missing ")


class MongoDB(object):

    def __init__(self, dBName=None, collectionName=None):

        self.dBName = dBName
        self.collectionName = collectionName

        self.client = MongoClient("localhost", 27017)

        self.DB = self.client[self.dBName]
        self.collection = self.DB[self.collectionName]
        print("Collection: " ,collectionName) 

    def InsertData(self, path = None, parse_dates = None, dtype = None, skiprows = None):

        df = pd.read_csv(path, parse_dates, dtype, skiprows)
        data = df.to_dict('records')

        self.collection.insert_many(data)
        print("All the Data has been Exported to Mongo DB Server")

if __name__ == "__main__":
    
    mongodb = MongoDB(dBName = 'CovidModel', collectionName='Confirmed_global_narrow')
    mongodb.InsertData(path = "https://data.humdata.org/hxlproxy/data/download/time_series_covid19_confirmed_global_narrow.csv?dest=data_edit&filter01=merge&merge-url01=https%3A%2F%2Fdocs.google.com%2Fspreadsheets%2Fd%2Fe%2F2PACX-1vTglKQRXpkKSErDiWG6ycqEth32MY0reMuVGhaslImLjfuLU0EUgyyu2e-3vKDArjqGX7dXEBV8FJ4f%2Fpub%3Fgid%3D1326629740%26single%3Dtrue%26output%3Dcsv&merge-keys01=%23country%2Bname&merge-tags01=%23country%2Bcode%2C%23region%2Bmain%2Bcode%2C%23region%2Bsub%2Bcode%2C%23region%2Bintermediate%2Bcode&filter02=merge&merge-url02=https%3A%2F%2Fdocs.google.com%2Fspreadsheets%2Fd%2Fe%2F2PACX-1vTglKQRXpkKSErDiWG6ycqEth32MY0reMuVGhaslImLjfuLU0EUgyyu2e-3vKDArjqGX7dXEBV8FJ4f%2Fpub%3Fgid%3D398158223%26single%3Dtrue%26output%3Dcsv&merge-keys02=%23adm1%2Bname&merge-tags02=%23country%2Bcode%2C%23region%2Bmain%2Bcode%2C%23region%2Bsub%2Bcode%2C%23region%2Bintermediate%2Bcode&merge-replace02=on&merge-overwrite02=on&filter03=explode&explode-header-att03=date&explode-value-att03=value&filter04=rename&rename-oldtag04=%23affected%2Bdate&rename-newtag04=%23date&rename-header04=Date&filter05=rename&rename-oldtag05=%23affected%2Bvalue&rename-newtag05=%23affected%2Binfected%2Bvalue%2Bnum&rename-header05=Value&filter06=clean&clean-date-tags06=%23date&filter07=sort&sort-tags07=%23date&sort-reverse07=on&filter08=sort&sort-tags08=%23country%2Bname%2C%23adm1%2Bname&tagger-match-all=on&tagger-default-tag=%23affected%2Blabel&tagger-01-header=province%2Fstate&tagger-01-tag=%23adm1%2Bname&tagger-02-header=country%2Fregion&tagger-02-tag=%23country%2Bname&tagger-03-header=lat&tagger-03-tag=%23geo%2Blat&tagger-04-header=long&tagger-04-tag=%23geo%2Blon&header-row=1&url=https%3A%2F%2Fraw.githubusercontent.com%2FCSSEGISandData%2FCOVID-19%2Fmaster%2Fcsse_covid_19_data%2Fcsse_covid_19_time_series%2Ftime_series_covid19_confirmed_global.csv", 
                       parse_dates = ["Date"])
    
    mongodb = MongoDB(dBName = 'CovidModel', collectionName='Beds')
    mongodb.InsertData(path="https://raw.githubusercontent.com/hf2000510/infectious_disease_modelling/master/data/beds.csv")

You are passing incorrect parameters to read_csv(). If you don't specify the parameter names they are passed in the order as per the documentation.

You can likely fix you issue with:

df = pd.read_csv(path, parse_dates=parse_dates, dtype=dtype, skiprows=skiprows)