有没有办法增加 tinydb JSON 限制?

问题描述

我有一个 tinydb json 文件,但我注意到在某个时候它拒绝将更多项目写入 json 文件并在解析时抛出错误,因为它在写入项目的过程中中断

这是回溯。它显示json解析器解析失败,因为作者在项目中间切断了写入

Traceback (most recent call last):
  File "C:\Program Files (x86)\python38-32\lib\threading.py",line 932,in _bootstrap_inner
    self.run()
  File "main.py",line 79,in run
    message.process()
  File "C:\Users\Administrator\Downloads\dbtest\Login_Message.py",line 45,in process
    DataBase.loadAccount(self)
  File "C:\Users\Administrator\Downloads\dbtest\DataBase.py",line 9,in loadAccount
    user_data = db.search(query.token == str(user.token))
  File "C:\Program Files (x86)\python38-32\lib\site-packages\tinydb\table.py",line 234,in search
    docs = [doc for doc in self if cond(doc)]
  File "C:\Program Files (x86)\python38-32\lib\site-packages\tinydb\table.py",in <listcomp>
    docs = [doc for doc in self if cond(doc)]
  File "C:\Program Files (x86)\python38-32\lib\site-packages\tinydb\table.py",line 588,in __iter__
    for doc_id,doc in self._read_table().items():
  File "C:\Program Files (x86)\python38-32\lib\site-packages\tinydb\table.py",line 638,in _read_table
    tables = self._storage.read()
  File "C:\Program Files (x86)\python38-32\lib\site-packages\tinydb\storages.py",line 125,in read
    return json.load(self._handle)
  File "C:\Program Files (x86)\python38-32\lib\json\__init__.py",line 293,in load
    return loads(fp.read(),File "C:\Program Files (x86)\python38-32\lib\json\__init__.py",line 357,in loads
    return _default_decoder.decode(s)
  File "C:\Program Files (x86)\python38-32\lib\json\decoder.py",line 337,in decode
    obj,end = self.raw_decode(s,idx=_w(s,0).end())
  File "C:\Program Files (x86)\python38-32\lib\json\decoder.py",line 355,in raw_decode
    raise JSONDecodeError("Expecting value",s,err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 234357 (char 234356)

解决方法

发生这种情况的原因是多个线程同时写入 db 文件,所以我最终手动写入多个文件:每个条目一个