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

pickledb 将列表附加到 python

如何解决pickledb 将列表附加到 python

对于课程站点(使用flask 创建),我创建了一个json 数据库,我正在使用main.py 中的pickleDB 访问该数据库

这是我的 course.json 的样子:

{
  "Course A": 
  {"Student1": 
  {
    "grade":"","distribution":"","timezone":"","rank":"",},"Student2":
  {
    "grade":"",}
  },"Course B": 
  {"Student1": 
  {
    "grade":"",}
  }
}

我已经添加了所有必要的导入并设置得很好。 现在,从一个表单中,我请求了数据(对于一个新学生),我想将它添加到课程 A,我已经使用了 pickleDB 的附加功能,如下所示:

  course.append(courseName,{username: 
  {
    "grade":userGrade,"distribution":userdistribution,"timezone":userTimezone,"rank":userRank,}
  }
    )

但是,当我这样做时,会出现错误。这是错误

[2021-06-17 08:59:08,203] ERROR in app: Exception on /admin/assign [POST]
Traceback (most recent call last):
  File "/opt/virtualenvs/python3/lib/python3.8/site-packages/flask/app.py",line 2447,in wsgi_app
    response = self.full_dispatch_request()
  File "/opt/virtualenvs/python3/lib/python3.8/site-packages/flask/app.py",line 1952,in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "/opt/virtualenvs/python3/lib/python3.8/site-packages/flask/app.py",line 1821,in handle_user_exception
    reraise(exc_type,exc_value,tb)
  File "/opt/virtualenvs/python3/lib/python3.8/site-packages/flask/_compat.py",line 39,in reraise
    raise value
  File "/opt/virtualenvs/python3/lib/python3.8/site-packages/flask/app.py",line 1950,in full_dispatch_request
    rv = self.dispatch_request()
  File "/opt/virtualenvs/python3/lib/python3.8/site-packages/flask/app.py",line 1936,in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "main.py",line 398,in courseAdd
    course.append(courseName,File "/opt/virtualenvs/python3/lib/python3.8/site-packages/pickledb.py",line 151,in append
    self.db[key] = tmp + more
TypeError: unsupported operand type(s) for +: 'dict' and 'dict'

我不知道为什么会出现错误,我也参考了 pickleDB 文档:https://patx.github.io/pickledb/commands.html

/凹凸

解决方法

尝试使用

a = dict(list(data1.items()) + list(data2.items()))
print(a)

以数据为pickle db数据。

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