如果我想更新一个数据库对象,对于传入的参数,如果为None则不更新该字段,不为None则更新,应如何实现?
例子:更新账户信息,前端传入id,name,pwd和address字段,想实现如果address为空则不更新,不为空则更新。我只能想到通过if语句判断是否为空,然后拼接更新语句,但这对于参数很多的对象,代码会很臃肿,是否存在更好的解决方式。
RegAccountInfo.query.filter(RegAccountInfo.id == id).update(
{
"name": name,
"pwd": pwd,
"address": address, #如果对某个字段设置为为None则忽略更新,当前代码会更新为None值
})
greyli
(Grey Li)
2
这和 Flask-SQLAlchemy 没关系(修改了标题)。你的前端参数是怎么拿到的?需要多一点上下文代码,然后看看怎么写比较合理。
参数是由前端通过Flask-Form传递过来的,其中address不是必填项,因此我想实现有address则更新该字段,用户没填写则不更新。
@user.route(’/update/user’, methods=[‘POST’])
def exec_cmd():
user_update_form = UserUpdateForm()
name = user_update_form .name.data
pwd= user_update_form .pwd.data
address= user_update_form .address.data
RegAccountInfo.query.filter(RegAccountInfo.id == id).update(
{
“name”: name,
“pwd”: pwd,
“address”: address, #如果对某个字段设置为为None则忽略更新,当前代码会更新为None值
})