TypeError:“Product”对象在Flas中不可订阅

2024-04-16 06:47:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我是python和flask的新手,我正在学习构建flaskrestapi。我使用SQLAlchemy作为数据库。使用postpat对象获取数据时出错。我对这个完全陌生,不知道如何解决这个问题,也不知道它意味着什么。在

我在stackoverflow中找到了一些解决方案,但我无法用这些解决方案解决问题。抱歉,如果我不能解释清楚。在

这是我的代码:

from flask import Flask, request, jsonify
from flask_sqlalchemy import SQLAlchemy
from flask_marshmallow import Marshmallow
import os

app = Flask(__name__)
basedir = os.path.abspath(os.path.dirname(__file__))

app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + 
os.path.join(basedir, 'db.sqlite')
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

db = SQLAlchemy(app)

ma = Marshmallow(app)

class Product(db.Model):
   id = db.Column(db.Integer, primary_key=True, unique=True)
   name = db.Column(db.String(100))
   description = db.Column(db.String(200))
   price = db.Column(db.Float)
   qty = db.Column(db.Integer)

   def __init__(self, name, description, price, qty):
     self.name = name
     self.description = description
     self.price = price
     self.qty = qty

class ProductSchema(ma.Schema):
   class Meta:
      fields = ('id', 'name', 'description', 'price', 'qty')     

product_schema = ProductSchema(strict = True)   
product_schema = ProductSchema(many=True, strict = True)   

@app.route('/product', methods=['POST'])
def add_product():
   name = request.json['name']
   description = request.json['description']
   price = request.json['price']
   qty = request.json['qty']

   new_product = Product(name, description, price, qty)

   db.session.add(new_product)
   db.session.commit()

   return product_schema.jsonify(new_product)

if __name__ == '__main__':
   app.run(debug=True)

发送时收到的错误是“TypeError:”Product“object is not subscriptable” Error traceback

^{pr2}$

有人能帮我解决这个错误吗?提前谢谢。在


Tags: nameimportselfjsontrueappflaskdb
1条回答
网友
1楼 · 发布于 2024-04-16 06:47:53

问题是您重写了product_schema的值,使得它需要一个对象列表,而不是一个对象。如果您在第二个赋值中将变量名更改为其他值,例如products_schema,那么您的代码应该可以工作。在

相关问题 更多 >