尝试使用字段名的烧瓶变量更新 mongodb 时出错
error when trying to update mongodb using a flask variable for the fieldname
我正在使用 Flask 尝试更新一个 mongodb 集合,当我声明需要更新的字段名时它工作正常,但我希望字段名成为一个变量,具体取决于需要更新的字段名。这可以很好地更新字段:
Scoresenglish6.objects(user_id=user_id).update(E6001=str(score))
但是,正在更新的字段名可以更改(因此在本例中为“E6001”)所以我将需要更新的字段名作为一个名为 field_name:
的变量
score = "10"
field_name = "E6001"
Scoresenglish6.objects(user_id=user_id).update(field_name=str(score))
然后我得到错误:
mongoengine.errors.InvalidQueryError: Cannot resolve field "field_name"
显然是因为没有字段名称叫field_name。有没有办法做到这一点?提前致谢,我是一名从事家庭项目的家庭编码员,如果这看起来含糊不清且没有得到很好的解释,我深表歉意。
您可以使用locals()来实现您想要的。
试试这个:
score = "10"
field_name = "E6001"
Scoresenglish6.objects(user_id=user_id).update(locals()['field_name']=str(score))
查看 this tutorial 以了解 locals()
的工作原理和使用方法。
我正在使用 Flask 尝试更新一个 mongodb 集合,当我声明需要更新的字段名时它工作正常,但我希望字段名成为一个变量,具体取决于需要更新的字段名。这可以很好地更新字段:
Scoresenglish6.objects(user_id=user_id).update(E6001=str(score))
但是,正在更新的字段名可以更改(因此在本例中为“E6001”)所以我将需要更新的字段名作为一个名为 field_name:
的变量score = "10"
field_name = "E6001"
Scoresenglish6.objects(user_id=user_id).update(field_name=str(score))
然后我得到错误:
mongoengine.errors.InvalidQueryError: Cannot resolve field "field_name"
显然是因为没有字段名称叫field_name。有没有办法做到这一点?提前致谢,我是一名从事家庭项目的家庭编码员,如果这看起来含糊不清且没有得到很好的解释,我深表歉意。
您可以使用locals()来实现您想要的。
试试这个:
score = "10"
field_name = "E6001"
Scoresenglish6.objects(user_id=user_id).update(locals()['field_name']=str(score))
查看 this tutorial 以了解 locals()
的工作原理和使用方法。