将虚拟列添加到反映 table

add a virtual column to a reflected table

我有一个class

class TableA(Base):
    __table__ = table_a
    __mapper_args__ = {
            'primary_key':[table_a.pk,],
            }

并想添加一个转换作为查询时可以看到的列(我只有读取权限,所以不需要写入)

new_col = func.regexp_substr(table_a.original, r'[^-]*').label("new_col")

有简单的方法吗?

Using column_property:

class TableA(Base):
    __table__ = table_a
    __mapper_args__ = {
            'primary_key':[table_a.pk,],
            }

    # new_col = column_property(func.regexp_substr(original, r'[^-]*'))  # or
    new_col = column_property(func.regexp_substr(table_a.c.original, r'[^-]*'))

使用:https://docs.sqlalchemy.org/en/13/core/defaults.html#sqlalchemy.schema.FetchedValue

class TableA(Base):
    ........
    new_col = Column(DB.String, FetchedValue())
    ........