gpt4 book ai didi

python - 将属性值添加到 SQLAlchemy 中的列名字典

转载 作者:太空宇宙 更新时间:2023-11-04 01:03:21 25 4
gpt4 key购买 nike

我有一个自定义方法,用于在 Flask 中将 SQLAlchemy 对象作为字典返回:

class Script(db.Model):
__tablename__ = "script"
id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(144), index=True)
audio_filename = db.Column(db.String(144))


@property
def audio_file_path(self):
return os.path.join(app.config['UPLOAD_FOLDER'], 'voices/', self.audio_filename)

def as_dict(self):
return {c.name: getattr(self, c.name) for c in self.__table__.columns}

这适用于列字段,但我还想包括模型属性的返回值。

我的问题是,在字典中返回audio_file_path@property 值的最pythonic 方法是什么。

我知道这行得通:

def as_dict(self):
d = {c.name: getattr(self, c.name) for c in self.__table__.columns}
d['audio_file_path'] = self.audio_file_path
return d

但它不是很漂亮。

最佳答案

如果您使用 property 装饰器设置多个属性,您可以使用 vars 遍历类并检查该项目是否为 property

def as_dict(self):

props = {k: getattr(self, k) for (k, v) in vars(self.__class__).items()
if type(v) is property}

columns = {c.name: getattr(self, c.name) for c in self.__table__.columns}
columns.update(**props)

return columns

关于python - 将属性值添加到 SQLAlchemy 中的列名字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31752843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com