我是 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/