如何使用变量的值作为要设置的参数名称

问题描述 投票:0回答:1

有一种方法使用

*kwargs
,我正在尝试传递对象的属性。

我当前的代码看起来像这样:

user = User(username="User", password="Password")
attr = "username"

session.execute(select(User).filter_by(attr=getattr(user, attr))).scalar_one()

我可以使用

getattr()
来获取属性的值,但不确定如何使用要使用的 attr 的值。

我尝试仅使用

attr
作为参数名称,并且得到了
User does not contain property attr

的响应

我希望的是,当我将

attr
更改为密码时,它将使用密码作为参数和要使用的值进行过滤。

我用谷歌搜索了不同的方式来表达我的问题,但我不断找到python变量中的函数参数名称。那里提供的答案并不能回答我的问题,除非我误解了问题和答案。

python sqlalchemy parameter-passing
1个回答
0
投票

getattr()
需要一个字符串作为属性名称。但您可以通过使用 f 字符串轻松解决此问题:

getattr(user, f'{attr}')

会完成工作

© www.soinside.com 2019 - 2024. All rights reserved.