当前位置: 首页 > 知识库问答 >
问题:

从csv文件插入一个文件pymongo时出错

罗和煦
2023-03-14

我是一个Python和mongob的新手,我试图从一个cvs文件写入一个pymongo文档。错误如下: TypeError:'str'对象是不可调用的因为?我附上相关代码谢谢

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{}: {}')

共有1个答案

漆雕欣德
2023-03-14

您的错误不是来自pymongo,而是在定义字典时试图调用cols。这是因为你的列是字符串:

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]} 
 类似资料:
  • 问题内容: 我有一些要导入mySQL的CSV数据文件。我想在shell脚本中进行插入,以便可以将其自动化。但是,我对在脚本中使用明文形式输入用户名和密码感到有些厌倦 我有以下问题: 我对脚本中明文中的uname / pwd的想法感到不满意(反正还是这样,还是我太偏执)?也许我可以为插入表设置仅具有INSERT特权的用户? 数据库表(导入原始数据的数据库表)具有基于表列的唯一键。我尝试导入的数据中也

  • 我试图将一个目录中的几个csv文件读入pandas,并将它们连接到一个大数据帧中,但出现以下错误: 这是我的密码 我不知道为什么它不起作用。我试图用chmod解决这个问题,但一切都变了

  • 我在同一个文件夹中有数千个csv文件名,如下file_x_x.csv,其中x是1到10000之间的数字。每个文件包括一个标题和一行数据: file_1_1.csv 我的方法: 我不知道如何在最后创建一个唯一的文件。你能看一下上面的代码并告诉我如何获得所需的输出吗?如果我错过了什么?

  • 我试图寻找'jpg,jpeg,png'文件在我的USB驱动器,并试图将它们一个接一个地移动到一个新的文件夹。请让我知道这里有什么问题。 错误:- 目标目录E\Mac\MovedPics不存在语音指令2。zip:E:\Mac目的地目录E\Mac\MovedPics不存在usbpicsdata。txt:E:\Mac REGEXP匹配:-E:\Mac\4。jpg回溯(最近一次调用last):文件“C:\

  • 我在文本文件中插入的代码如下: 我想将所有这些数据插入到csv文件中,但我尝试了以下方法: 如何将此数据逐行插入到带有列标题的csv文件中?

  • 想要知道更多东西吗?当你需要从表中查找某些值时,可以使用冗长的 case 语句或 selectors 实现,但更整洁的方式是使用 extlookup 函数实现。 在 puppetmaster 上可以使用 extlookup 函数查询外部的 CSV 文件,并返回匹配的数据片段。 将所有数据组织到一个单一的文件并将它从 Puppet 配置清单中分离出来, 可以使维护工作变得更简单,也便于与其他人分享: