gpt4 book ai didi

python - pymongo类型错误: document must be an instance of dict, bson.son.SON,bson.raw_bson.RawBSONDocument

转载 作者:行者123 更新时间:2023-12-02 19:04:44 33 4
gpt4 key购买 nike

我尝试将数据从 SQL Server 迁移到 MongoDB,但在将数据导入到 MongoDB 的最后阶段遇到了以下类型错误。

mongoImp = dbo.insert_many(jArray)
File "/home/lrsa/.local/lib/python2.7/site-packages/pymongo/collection.py", line 710, in insert_many
blk.ops = [doc for doc in gen()]
File "/home/lrsa/.local/lib/python2.7/site-packages/pymongo/collection.py", line 702, in gen
common.validate_is_document_type("document", document)
File "/home/lrsa/.local/lib/python2.7/site-packages/pymongo/common.py", line 407, in validate_is_document_type
"collections.MutableMapping" % (option,))
TypeError: document must be an instance of dict, bson.son.SON, bson.raw_bson.RawBSONDocument, or a type that inherits from collections.MutableMapping

我还检查了type(jArray),它是一个str。也尝试将数据类型转换为 list 但未能成功。
我的代码:

import pyodbc
import json
import collections
import pymongo
from bson import json_util

odbcArray = []
mongoConStr = '192.168.10.107:36006'
sqlConStr = 'DRIVER={MSSQL-NC1311};SERVER=tcp:192.168.10.103,57967;DATABASE=AdventureWorks;UID=testuser;PWD=testuser'
mongoConnect = pymongo.MongoClient(mongoConStr)
sqlConnect = pyodbc.connect(sqlConStr)

dbo = mongoConnect.eaedw.sqlData
dbDocs = dbo.find()
sqlCur = sqlConnect.cursor()
sqlCur.execute("""
SELECT TOP 2 BusinessEntityID,Title, Demographics, rowguid, ModifiedDate
FROM Person.Person
""")

tuples = sqlCur.fetchall()

for tuple in tuples:
doc = collections.OrderedDict()
doc['id'] = tuple.BusinessEntityID
doc['title'] = tuple.Title
doc['dgrap'] = tuple.Demographics
doc['rowi'] = tuple.rowguid
doc['mtime'] = tuple.ModifiedDate
odbcArray.append(doc)

jArray = json.dumps(odbcArray, default=json_util.default)
mongoImp = dbo.insert_many(jArray)

mongoConnect.close()
sqlConnect.close()

最佳答案

看看这个 bulk insert example来自 MongoDB:的网页。跳过 json.dumps 调用(它将文档数组转换为 json 格式的字符串)并直接插入 odbcArray:

mongoImp = dbo.insert_many(odbcArray)

关于python - pymongo类型错误: document must be an instance of dict, bson.son.SON,bson.raw_bson.RawBSONDocument,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42951179/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com