Python 我正在制作一个烧瓶+;ReactJs项目和my flask api中出现以下错误:AttributeError:';员工';对象没有属性';追加';

Python 我正在制作一个烧瓶+;ReactJs项目和my flask api中出现以下错误:AttributeError:';员工';对象没有属性';追加';,python,reactjs,flask,sqlalchemy,Python,Reactjs,Flask,Sqlalchemy,这是我的FlaskAPI代码。我使用sqlalchemy连接了数据库,并为表查询创建了一个模型。 我正在处理一个Flask+ReactJs项目,在我的Flask api中出现以下错误:AttributeError:“Employee”对象没有属性“append” from flask import Flask, jsonify, request from flask_sqlalchemy import SQLAlchemy import json with open('C:\\Users\\n

这是我的FlaskAPI代码。我使用sqlalchemy连接了数据库,并为表查询创建了一个模型。 我正在处理一个Flask+ReactJs项目,在我的Flask api中出现以下错误:AttributeError:“Employee”对象没有属性“append”

from flask import Flask, jsonify, request
from flask_sqlalchemy import SQLAlchemy
import json

with open('C:\\Users\\new\\Desktop\\ems\\api\\venv\\config.json', 'r') as c:
    params = json.load(c)["params"]

local_server = True
app = Flask(__name__)
app.secret_key = 'super-secret-key'
app.config['UPLOAD_FOLDER'] = params['upload_location']

if local_server:
    app.config['SQLALCHEMY_DATABASE_URI'] = params['local_uri']
else:
    app.config['SQLALCHEMY_DATABASE_URI'] = params['prod_uri']

db = SQLAlchemy(app)

class Employee(db.Model):
    sno = db.Column(db.Integer, primary_key=True)
    id = db.Column(db.Integer, nullable=False)
    name = db.Column(db.String, nullable=False)
    email = db.Column(db.String, nullable=False)
    contact = db.Column(db.Integer, nullable=False)
    designation = db.Column(db.String, nullable=False)
    date = db.Column(db.String, nullable=True)


@app.route("/employee")
def employee():
    employee_list = Employee.query.all()
    employee = []
    for employee in employee_list:
        employee.append({'id' : employee.id,
                        'name' : employee.name,
                        'email' : employee.email,
                        'contact' : employee.contact,
                        'designation' : employee.designation})
    return jsonify({'employee' : employee})


@app.route("/add", methods=['POST'])
def add():
    employee_data = request.get_json()
    new_employee = Employee(id = employee_data['id'],
                            name = employee_data['name'],
                            email = employee_data['email'],
                            contact = employee_data['contact'],
                            designation = employee_data['designation'])
    db.session.add(new_employee)
    db.session.commit()
    return 'Added Successfully', 201


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

您有三个名称相同的对象(这不是一个好的做法,因为它会让您感到困惑,并最终引入与刚才遇到的一样的bug):

  • 员工(1):烧瓶路线的功能
  • 员工(2):您试图附加到的空列表
  • employee(3):for循环中当前元素的名称
每次在同一命名空间中创建具有相同名称的新变量时,旧变量都会被覆盖。在您的例子中,函数
employee()
没有问题。但是employee\u列表中employee的两个变量
employee=[]
最终发生冲突,python最终删除
employee=[]
,现在
employee
指向循环中的项,该项没有
append
方法,因为它是类
employee
中的对象

要解决此问题,请更改列表的名称或循环变量的名称

@app.route(“/employee”)
def employee():
employee\u list=employee.query.all()

employees=[]#您正在尝试运行
employee.append
,尽管这样的函数不存在,也没有定义。您需要创建函数,并在调用它之前使其执行某些操作。