Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/277.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 溢出错误:MongoDB最多只能处理8字节整数?_Python_Json_Mongodb - Fatal编程技术网

Python 溢出错误:MongoDB最多只能处理8字节整数?

Python 溢出错误:MongoDB最多只能处理8字节整数?,python,json,mongodb,Python,Json,Mongodb,我花了12个小时在网上搜索。我完全迷路了,请帮助我 我试图从API端点提取数据并将其放入MongoDB。数据如下所示: {"_links": { "self": { "href": "https://us.api.battle.net/data/sc2/ladder/271302?namespace=prod" } }, "league": { "league_key": { "league_id": 5, "season_id

我花了12个小时在网上搜索。我完全迷路了,请帮助我

我试图从API端点提取数据并将其放入MongoDB。数据如下所示:

{"_links": {
    "self": {
      "href": "https://us.api.battle.net/data/sc2/ladder/271302?namespace=prod"
    }
  },
  "league": {
    "league_key": {
      "league_id": 5,
      "season_id": 37,
      "queue_id": 201,
      "team_type": 0
    },
    "key": {
      "href": "https://us.api.battle.net/data/sc2/league/37/201/0/5?namespace=prod"
    }
  },
  "team": [
    {
      "id": 6956151645604413000,
      "rating": 5321,
      "wins": 131,
      "losses": 64,
      "ties": 0,
      "points": 1601,
      "longest_win_streak": 15,
      "current_win_streak": 4,
      "current_rank": 1,
      "highest_rank": 10,
      "previous_rank": 1,
      "join_time_stamp": 1534903699,
      "last_played_time_stamp": 1537822019,
      "member": [
        {
          "legacy_link": {
            "id": 9964871,
            "realm": 1,
            "name": "mTOR#378",
            "path": "/profile/9964871/1/mTOR"
          },
          "played_race_count": [
            {
              "race": "Zerg",
              "count": 195
            }
          ],
          "character_link": {
            "id": 9964871,
            "battle_tag": "Hellghost#11903",
            "key": {
              "href": "https://us.api.battle.net/data/sc2/character/Hellghost-11903/9964871?namespace=prod"
            }
          }
        }
      ]
    },
    {
      "id": 11611747760398664000, .....
....
代码如下:

for ladder_number in ladder_array:
    ladder_call_url = ladder_call+slash+str(ladder_number)+eng_locale+access_token
    url = str(ladder_call_url)
    response = requests.get(url)
    print('trying ladder number '+str(ladder_number))
    print('calling :'+url)
    if response.status_code == 200:
        print('status: '+str(response))
        mmr_db.ladders.insert_one(response.json())
我得到一个错误:

溢出错误:MongoDB最多只能处理8字节整数

这是因为我试图加载的数据太大吗?“ID”整数是否太大

哦,老兄,任何帮助都将不胜感激

_______编辑____________


编辑以包含回溯:

Traceback (most recent call last):
  File "C:\scripts\mmr_from_ladders.py", line 96, in <module>
    mmr_db.ladders.insert_one(response.json(), bypass_document_validation=True)
  File "C:\Users\me\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymongo\collection.py", line 693, in insert_one
    session=session),
  File "C:\Users\me\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymongo\collection.py", line 607, in _insert
    bypass_doc_val, session)
  File "C:\Users\me\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymongo\collection.py", line 595, in _insert_one
    acknowledged, _insert_command, session)
  File "C:\Users\me\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymongo\mongo_client.py", line 1243, in _retryable_write
    return self._retry_with_session(retryable, func, s, None)
  File "C:\Users\me\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymongo\mongo_client.py", line 1196, in _retry_with_session
    return func(session, sock_info, retryable)
  File "C:\Users\me\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymongo\collection.py", line 590, in _insert_command
    retryable_write=retryable_write)
  File "C:\Users\me\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymongo\pool.py", line 584, in command
    self._raise_connection_failure(error)
  File "C:\Users\me\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymongo\pool.py", line 745, in _raise_connection_failure
    raise error
  File "C:\Users\me\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymongo\pool.py", line 579, in command
    unacknowledged=unacknowledged)
  File "C:\Users\me\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymongo\network.py", line 114, in command
    codec_options, ctx=compression_ctx)
  File "C:\Users\me\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pymongo\message.py", line 679, in _op_msg
    flags, command, identifier, docs, check_keys, opts)
OverflowError: MongoDB can only handle up to 8-byte ints
回溯(最近一次呼叫最后一次):
文件“C:\scripts\mmr\u from_ladders.py”,第96行,在
mmr\u db.ladders.insert\u one(response.json(),绕过\u document\u validation=True)
文件“C:\Users\me\AppData\Local\Programs\Python37-32\lib\site packages\pymongo\collection.py”,第693行,插入
会话=会话),
文件“C:\Users\me\AppData\Local\Programs\Python37-32\lib\site packages\pymongo\collection.py”,第607行,插入
绕过(文档、会话)
文件“C:\Users\me\AppData\Local\Programs\Python37-32\lib\site packages\pymongo\collection.py”,第595行,插入
已确认,_插入_命令,会话)
文件“C:\Users\me\AppData\Local\Programs\Python 37-32\lib\site packages\pymongo\mongo\u client.py”,第1243行,在可检索的文件中
返回self.\u使用会话重试(可重试、函数、s、无)
文件“C:\Users\me\AppData\Local\Programs\Python\37-32\lib\site packages\pymongo\mongo\u client.py”,第1196行,在\u retry\u with\u session中
返回函数(会话、存储信息、可检索)
文件“C:\Users\me\AppData\Local\Programs\Python37-32\lib\site packages\pymongo\collection.py”,第590行,在插入命令中
可重试写入=可重试写入)
命令中第584行的文件“C:\Users\me\AppData\Local\Programs\Python37-32\lib\site packages\pymongo\pool.py”
自我提升连接失败(错误)
文件“C:\Users\me\AppData\Local\Programs\Python 37-32\lib\site packages\pymongo\pool.py”,第745行,在“连接失败”中
提出错误
文件“C:\Users\me\AppData\Local\Programs\Python 37-32\lib\site packages\pymongo\pool.py”,命令行579
未确认=未确认)
命令第114行的文件“C:\Users\me\AppData\Local\Programs\Python\Python37-32\lib\site packages\pymongo\network.py”
编解码器(可选,ctx=压缩(ctx)
文件“C:\Users\me\AppData\Local\Programs\Python\Python37-32\lib\site packages\pymongo\message.py”,第679行,在\u op\u msg中
标志、命令、标识符、文档、检查键、选项)
溢出错误:MongoDB最多只能处理8字节的整数
MongoDB的本机二进制扩展JSON格式/数据类型-仅支持32位(有符号)和64位(有符号)整数-8字节为64位

可存储在64位整数中的最大整数值为: 9223372036854775807

在您的示例中,您似乎有更大的ID,例如: 1161174760398664000

我猜生成此数据的应用程序使用的是uint64类型(unsigned可以保存x2-1值)

如果可能的话,我会先看看这些潜在的解决方案:

  • 将另一端更改为对ID使用int64(签名)类型
  • 使用as替换传入ID,然后为您的唯一ID获取12字节~GUID

您的示例中的ID是8字节的最大值。是哪一行导致了问题?是否有堆栈跟踪?已编辑以包含回溯。@FLAV10:是否获得此错误的解决方案?在将json文件上传到mongodb时,我也面临同样的问题。谢谢!因为这个错误,我开始失去理智。非常感谢。