insert errdocuments must have only string keys, key was b'files'或key was b'length'等等

探讨了在使用dht磁力转种子过程中遇到的inserterrdocumentsmusthaveonlystringkeys错误,并详细解释了解决方案,即如何将bytes类型的数据转换为字符串以符合Mongodb的存储要求。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

insert errdocuments must have only string keys, key was b’files’或key was b’length’

这个错误是出在dht磁力转种子并将信息存入Mongodb存储中的,

data=ZDY6bGVuZ3RoaTY4MzM0MTQyNmU0Om5hbWU1MDpEQ3MuTGVnZW5kcy5vZi5Ub21vcnJvdy4zeDAyLnd3dy5EaXZ4VG90YUwuY29tLmF.......

res = bdecode(base64.b64decode(data.encode()))  解码

res=OrderedDict([(b'length', 358955470), (b'name', b'[ Torrent9.tv ] Marvels.Inhumans.S01E05.VOSTFR.HDTV.XViD-EXTREME.avi'), (b'piece length', 524288), (b'pieces',b'\xdfd\xb7k\xae\x0b\xd0t"\xe7\xe8\xde\x8f0\x8eA4E\x16l*\xae\xf1^{\xfc\xb0d2g\x06\x07\x01\xa8\xe1*\xf9\xf6\x05\xa2\x1a\xa1Tj\x15\xcbn(\x0f0\x17\x9a5d\x97\x9a\xf6\xd9| ......

res为解码后的信息为bytes

mess ={"file_data":res}

mess为存入的字典样式

    async def insert(self,mess):
        '''
        插入数据
        :return:
        '''


        try:
            await self.collection.insert_one(mess)  #插入一条数据
            self.client.close()

因为插入文档的必须为字符串,而不是bytes形式,所以这里我们先解码存储,而是存储后,需要时在取出解码即存储data。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值