Sqlalchemy 使用 map func 返回列值

Posted

技术标签:

【中文标题】Sqlalchemy 使用 map func 返回列值【英文标题】:Sqlalchemy return column value with map func 【发布时间】:2022-01-24 04:19:49 【问题描述】:
class MyClass(Base):
    __tablename__ = 'my_table'
    id = Column(Integer, primary_key=True)
    type_id = Column(String(50))


# map value
type_name = 
    "type_id_1":"name_1",
    "type_id_2":"name_2"


从表 Myclass 查询 type_id 时有没有办法返回“类型名称”?

通过使用@hybrid_property,我非常接近目标


class Myclass(Base):
    ...
    @hybrid_property
    def type_name(self):
        # The goal is get type_name, but it's not working since self.type_id is not a String object
        name = type_name[self.type_id] 
        return cast(name, String)


【问题讨论】:

请查看***.com/a/53700911/2681632 了解如何使用case 执行SQL 端查找。 @Ilja Everilä 太棒了,这正是我想要的,非常感谢。 【参考方案1】:

阅读您的问题后,我是这样解释的。你想要这个吗?

class MyClass(Base):
    __tablename__ = 'my_table'
    id = Column(Integer, primary_key=True)
    type_id = Column(String(50))

    def __repr__(self):
        return "<my_table(id='%s', type_id='%s')>" % (self.id, self.type_id)

【讨论】:

不完全是,我需要的是:return type_name[self.type_id]

以上是关于Sqlalchemy 使用 map func 返回列值的主要内容,如果未能解决你的问题,请参考以下文章

sqlalchemy可以只查某一列吗

SQLAlchemy - 在查询中过滤func.count

将 SqlAlchemy group_by/func 查询转换为 GraphQL

JS中some(),every(),forEach(),map(),filter()区别

如何使用 sqlalchemy 计算平均数?

python中的map函数