flask sqlalchemy filter_by给出运行时错误

flask sqlalchemy filter_by给出运行时错误,flask,flask-sqlalchemy,Flask,Flask Sqlalchemy,对不起,如果问题是原始的。我不熟悉烧瓶和SQL炼金术 我有一个模型如下 class Department(FlaskSerializeMixin,db.Model): id = db.Column(db.Integer, primary_key=True) dep_name = db.Column(db.String(100),unique=True,nullable=False) dep_prefix = db.Column(db.String(

对不起,如果问题是原始的。我不熟悉烧瓶和SQL炼金术

我有一个模型如下

class Department(FlaskSerializeMixin,db.Model):
        id = db.Column(db.Integer, primary_key=True)
        dep_name = db.Column(db.String(100),unique=True,nullable=False)
        dep_prefix = db.Column(db.String(1),unique=True,nullable=False)
        cre_time =db.Column(db.DateTime)
        chg_time =db.Column(db.DateTime)
我要编辑的部门如下

@menuOps_bp.route('/edit_dep', methods=['POST'])
def edit_dep():
    req=request.get_json()
    print(req)
    if Department.query.filter_by(id != req['row_id'], dep_name=req['deptName'] ).first() is None:
        if Department.query.filter_by(id != req['row_id'], dep_prefix=req['dPrefix'] ).first() is None:
            dep = Department.query.filter_by(id=req['row_id']).first()
            dep.dep_name=req['deptName']
            dep.dep_prefix=req['dPrefix']
            dep.chg_time = datetime.datetime.now()
            db.session.commit()
            return jsonify({'success':"Department {dep} is update succussfully".format(dep=req['deptName'])})
        else:
            return jsonify({'error' : " The PreFix [ {prefix} ] is already Used !!!".format(prefix=req['dPrefix'])})
    else:
        return jsonify({'error' :  " Department [ {dep} ] is already Used !!!".format(dep=req['deptName'])})
该应用程序已正确启动,但在使用if Department.query.filter_byid!调用路由时req['row\U id'],dep\U name=req['deptName']。第一个为无:失败,出现以下错误。请帮助解决这个问题

  File "/home/rishthaz/QMS_AIMS/ECQ/ecqenv/lib/python3.7/site-packages/flask/app.py", line 1935, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "/home/rishthaz/QMS_AIMS/ECQ/v1/BE/menu/routes.py", line 29, in edit_dep
    if Department.query.filter_by(id != req['row_id'], dep_name=req['deptName'] ).first() is None:
**TypeError: filter_by() takes 1 positional argument but 2 were given**

基本上,我想从id!=而dep_name=

在您的情况下,我建议使用filter而不是filter_by,原因是您的目标是比较,而不是关键字参数:

如果不是Department.query.filter 部门id!=请求['row_id'], Department.dep_name==req['deptName'] : 持续 筛选器接受多个参数,并在您的案例中将它们视为和。此外,您还可以传递甚至调用它两次:

如果不是Department.query\ .filterDepartment.id!=请求['row_id']\ .filterDepartment.dep_name==req['deptName']: 持续
强烈推荐filter和filter_by之间的区别:

在您的情况下,我建议使用filter而不是filter_by,原因是您的目标是比较,而不是关键字参数:

如果不是Department.query.filter 部门id!=请求['row_id'], Department.dep_name==req['deptName'] : 持续 筛选器接受多个参数,并在您的案例中将它们视为和。此外,您还可以传递甚至调用它两次:

如果不是Department.query\ .filterDepartment.id!=请求['row_id']\ .filterDepartment.dep_name==req['deptName']: 持续 通过以下方式强烈推荐过滤器和过滤器的区别: