抱歉,问题是原始的。我是Flask和SQL Alchemy的新手。
我有一个如下模型。
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_by(id != req['row_id'], dep_name=req['deptName'] ).first() is None:
失败,并出现以下错误。请帮助解决问题。
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**
基本上我想触发查询 select count(1) from department where id != <somevalue> and dep_name = <somevalue>
在您的情况下,我建议您使用filter
而不是filter_by
,原因是您要进行比较而不是关键字参数:
if not Department.query.filter(
Department.id != req['row_id'],
Department.dep_name==req['deptName']
):
### continue...
filter
接受多个参数,并将其视and
您情况而定。另外,您还可以传递and_
甚至调用两次:
if not Department.query\
.filter(Department.id != req['row_id'])\
.filter(Department.dep_name==req['deptName']):
### continue ...
强烈建议与和区别的答案:filter
filter_by
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句