python - 获取类型的对象不是 JSON 可序列化的
问题描述
POST 请求成功,数据已发布到数据库,但我总是收到此错误。
TypeError: Object of type User is not JSON serializable
尝试将其设为 a __dict__
,但随后又产生了不同的错误。如何停止此错误?
在我的 schema.py 文件中
from flask import Flask
from app import db, ma
import os
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
first_name = db.Column(db.String(30), unique=False)
last_name = db.Column(db.String(30), unique=False)
email = db.Column(db.String(120), unique=True)
specialization = db.Column(db.String(50), unique=False)
user_type = db.Column(db.String(20), unique=False)
def __init__(self, first_name, last_name, email, specialization, user_type):
self.first_name = first_name
self.last_name = last_name
self.email = email
self.specialization = specialization
self.user_type = user_type
class UserSchema(ma.Schema):
class Meta:
# Fields to expose
fields = ('first_name', 'last_name', 'email', 'specialization', 'user_type')
user_schema = UserSchema()
users_schema = UserSchema(many=True)
在我的 app.py 文件中
from flask import Flask, render_template, request, jsonify
from flask_bootstrap import Bootstrap
from flask_sqlalchemy import SQLAlchemy
from flask_marshmallow import Marshmallow
@APP.route("/patient", methods=["POST"])
def add_appointment():
first_name = request.json['first_name']
last_name = request.json['last_name']
email = request.json['email']
specialization = request.json['specialization']
user_type = request.json['user_type']
new_user = schema.User(first_name, last_name, email, specialization, user_type)
schema.db.session.add(new_user)
schema.db.session.commit()
return jsonify(new_user)
我正在树莓派上的虚拟环境中运行我的烧瓶应用程序并连接到谷歌云 mysql 数据库(如果有任何区别)。
解决方案
似乎没有使用棉花糖模式。这可能有效,
schema.db.session.add(new_user)
schema.db.session.commit()
result, errors = schema.user_schema.dump(new_user)
return jsonify(result)
推荐阅读
- python - Pandas:multiIndex 数据帧上的部分索引不会重复行
- javascript - 合并 Javascript 对象中的一些值
- html - 让孩子弯曲测量相同的高度和宽度不同的行
- css - 当我只能访问 CSS(我无法更改 HTML)时,如何在引导程序中更改列宽?
- javascript - 超出图表中的最大文本大小
- visual-studio - 带有 Linux 平台的 Visual Studio 2019 .net 标准
- type-inference - 为什么添加定义会更改语言环境导入的类型正确性?
- ios - 删除项目时 UICollectionView 单元格消失
- python - 尝试在 AWS Lambda 上测试 Scrapy Web-Crawler 时出现此错误“raise error.reactornotrestartable()”
- javascript - 从 Angular 中的 API 获取数据时出现问题