Python: flask_marshmallowを使ってjsonを返すプログラム
表題の通り、flask、marshmallow、sqlalchemyを使って、getアクセスに対して、データベースから値を取得し、jsonを返すプログラムを作っています。
現在、データベースに接続し、値をUserオブジェクトとして取得できている状態で、marshmallowを使ってjsonに変換するところでエラーが出ております。
発生している問題・エラーメッセージ
TypeError: 'User' object is not iterable
Userオブジェクトは反復不可能であるといった旨のメッセージのようです。
router.py
python
1@bp.route('users/edit/<int:id>', methods=['GET']) 2def edit_user(id): 3 usr = users.find_user(id) 4 usr_schema = users.UserSchema(many=True) 5 return jsonify({"users": usr_schema.dump(usr).data})
return jsonify({"users": usr_schema.dump(usr).data})のラインでエラーが起こっております。
users.py
class User(db.Model): __tablename__ = 'users' id = db.Column(db.Integer, primary_key=True, nullable=False) name = db.Column(db.String(255, convert_unicode=True), nullable=False) pwd = db.Column(db.String(255, convert_unicode=True), nullable=False) mail = db.Column(db.String(255, convert_unicode=True), nullable=False) age = db.Column(db.Integer, nullable=False) created_at = db.Column(db.DateTime, nullable=False, default=datetime.now) updated_at = db.Column(db.DateTime, nullable=False, default=datetime.now, onupdate=datetime.now) class UserSchema(ma.SQLAlchemyAutoSchema): class Meta: model = User def find_user(id): usr = db.session.query(User).filter(User.id == id).first() return usr
使用ツール・フレームワーク
python 3.9
flask 1.1.2
SQLAlchemy 1.3.20
Marshmallow 3.9.1
参考リンク
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/11 02:34