python - Flask-sqlalchemy 通过指定列名动态更新字段
问题描述
如何通过在 Flask-SQLAlchemy 中指定列名以编程方式动态更新字段
我有一个名为PTc
It 的课程只会有一个长排,因此我可以使用以下内容拉回所有信息:
Target = PTc.query.order_by(PTc.id).first()
我可以手动更新一个字段,例如Target.price = 2
然后提交。
如何动态更新?即当程序运行时,它可能希望根据条件更新价格、数量或可用性。
如果我将列名保存到变量中,columnToUpdate = 'amount'
那么尝试Target.columnToUpdate = 10
它当然会失败,因为它认为那是一列。
否则,我不得不检查每个列的条件,这可能会变得很麻烦,因为列数很大,即
if columnToUpdate == 'price'
Target.price = 20
elif columnToUpdate =='amount':
Target.amount = 20
...
elif columnToUpdate =='XYZ':
Target.amount = ABC
我一直在查看仅以最少的细节指定、插入、删除和选择的文档。
附录 - 类如下所示。
class PTc(db.Model):
# id column
id = db.Column(db.Integer, primary_key=True)
goldPrice = db.Column(db.Integer, nullable=False)
goldStock = db.Column(db.Integer, nullable=False)
goldPriceChange = db.Column(db.String(50), nullable=False)
goldHistory = db.Column(db.String(100), nullable=False)
goldAverage = db.Column(db.Integer, nullable=False)
rmPrice = db.Column(db.Integer, nullable=False)
rmStock = db.Column(db.Integer, nullable=False)
rmPriceChange = db.Column(db.String(50), nullable=False)
rmHistory = db.Column(db.String(100), nullable=False)
rmAverage = db.Column(db.Integer, nullable=False)
gemsPrice = db.Column(db.Integer, nullable=False)
gemsStock = db.Column(db.Integer, nullable=False)
gemsPriceChange = db.Column(db.String(50), nullable=False)
gemsHistory = db.Column(db.String(100), nullable=False)
gemsAverage = db.Column(db.Integer, nullable=False)
oilPrice = db.Column(db.Integer, nullable=False)
oilStock = db.Column(db.Integer, nullable=False)
oilPriceChange = db.Column(db.String(50), nullable=False)
oilHistory = db.Column(db.String(100), nullable=False)
oilAverage = db.Column(db.Integer, nullable=False)
非常感谢
解决方案
这setattr(PTc, "goldPrice", 200)
就是我一直在寻找的,感谢 Gord 的解决方案。
class.field = x
鉴于记录的约定阻止将变量用作字段,并且如果他们没有考虑到这一点,那么它会很想看看是否存在另一种 SQLAlchemy 特定方法。
推荐阅读
- c# - Automapper:绑定一个“来自”多个接口的具体类
- typescript - Typescript 泛型 - 扩展泛型参数
- python - 从 dockerfile 激活奇异容器中的 conda 环境
- oracle - 如何从多个数据库链接中获取数据并使用 LOOP 将其插入到特定表中
- google-app-maker - 小部件绑定限制:绑定不适用于服务器端的数据更改
- python - 需要在 Direct_message Python Instagram API 中发送可点击链接
- firebase - 为切换用户保存信息 Firebase 登录用户不需要重新验证?
- java - 连接 Spring Boot-MySql:不允许检索公钥
- keras - 如何使用 Keras 合并或连接两个顺序模型?
- javascript - 是否需要在后台加载动态图像?