gpt4 book ai didi

Python:将 MongoDB 迁移到 DynamoDB - float 错误

转载 作者:太空宇宙 更新时间:2023-11-04 08:33:50 24 4
gpt4 key购买 nike

我开始在日常琐事中使用Python,我发现了一个我无法解决的问题。通过这个脚本,只修改集合的名称(MongoDB)和表的名称(DynamoDB),整个过程在其他集合中运行的非常好。

在一个集合中(下面的示例),脚本执行得不是很好,因为集合中有 float 数据,例如地理定位数据

import sys

# Mongo
import pprint
from pymongo import MongoClient
Client = MongoClient('mongodb://localhost:27017/')
db = Client["developer"]
collection = db["geolocation"]

# Dynamo
import boto3
dynamodb = boto3.resource('dynamodb')
table = dynamodb.Table('geolocation')


# migrate
count = 0
with table.batch_writer() as batch:
for migrate in collection.find():
del migrate['__v']
del migrate['_id']

batch.put_item(Item= migrate)

# To show process
count += 1
print(str(collection.count()) + '::' + str(count))

发生的错误是:不支持浮点类型。请改用 Decimal 类型

我需要帮助创建一个 def 来扫描对象并将 float 的值替换为小数。有人可以帮助我吗?

最佳答案

当项目通过 boto3 上传时,DynamoDB 期望 float 的十进制格式。

您需要用 Decimal 替换 MongoDB 字典中的所有 float 。

首先,将python字典转回JSON

import json
migrate_json = json.dumps(migrate)

然后,将 JSON 解析回 python 字典, float 存储为 Decimal。

from decimal import Decimal
migrate = json.loads(migrate_json, parse_float=Decimal)

现在可以上传了

batch.put_item(Item=migrate)

关于Python:将 MongoDB 迁移到 DynamoDB - float 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50764201/

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