微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决有没有办法增加 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 文件,所以我最终手动写入多个文件:每个条目一个

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。