python - 从文件 csv 插入 pymongo 时出错

标签 python mongodb csv typeerror pymongo-3.x

我是 python 和 mongodb 的新手,我尝试从 cvs 文件写入 pymongo 文档。错误如下:TypeError: 'str' object is not callable 因为?我附上相关代码 谢谢

import csv
import sys
import json
from pymongo import MongoClient

client = MongoClient(host="localhost", port=27017)
db=client["test"]
mycol=["movimenti"]
print(mycol)

with open ('Movimenti.csv','r') as f:
    reader=csv.reader(f, delimiter=';')
    next(reader, None)
    data = []


    try:
        for row in reader:
            for col in row:
                mydict = {"datacontabile": col(1), "datavaluta":   col(3),"causale": col(4), "descrizione": col(5), "importo": col(6)  }                x = mycol.insert_one(mydict)
    except csv.Error as e:
        sys.exit('file{} , line{}: {}')

最佳答案

您的错误不是来自 pymongo,而是来自定义字典时尝试调用 col 。那是因为您的列是字符串:

with open('some_csv_file.csv', 'r') as f:
   reader = csv.reader(f)
   next(reader, None)

   for row in reader: # each row
       for col in row: #each value in your row
           print(type(col)) #outputs "<class 'str'>"

括号仅用于调用函数。如果您想获取字符串的第一个字符,请使用括号:

s = "Hello world"
print(s[0]) # outputs "H"
print(s(0)) # outputs TypeError: 'str' object is not callable

通常,csv 中的一行是数据库中的一个条目。因此我认为你的代码应该是:

        for row in reader:
            mydict = {"datacontabile": row[1], "datavaluta":  col[3], "causale": col[4], "descrizione": row[5], "importo": [6]} 

关于python - 从文件 csv 插入 pymongo 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60111212/

相关文章:

python - 为nodejs安装mongoose模块时出错

javascript - D3 : How to do an update pattern on normalized stacked bar chart?

java - CSV 生成、日期和长数字格式

csv - 从CSV文件播放的心理声音混合在一起(时间以帧为单位)

python - 使用 curl 将文件上传到 python flask 服务器

python - 如何在 Python 中使用 Selenium 编辑 CodeMirror?

具有默认列表参数的 Python 函数

linux - apt-get 安装 mongodb-10gen 失败

python - 退出/崩溃时关闭服务器套接字

javascript - POST后Express js MongoDB返回对象