0

对于课程站点(使用烧瓶创建),我创建了一个 json 数据库,我正在使用main.py.

这是我的 course.json 的样子:

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

我已经添加了所有必要的导入并将其设置好。现在,从一个表单中,我请求了数据(对于一个新学生),我想将它添加到课程 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

/撞

4

1 回答 1

0

尝试使用

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

将数据作为pickle db数据。

于 2021-06-18T13:38:21.413 回答