【发布时间】:2019-09-03 03:09:23
【问题描述】:
我有一个 SQLAlchemy 表定义如下:
user = Table('user', MetaData(),
Column('id', Integer),
Column('first_name', String),
Column('last_name', String))
查询时经常需要引用用户的全名,例如:
sql = (select([
user.c.id,
(user.c.first_name + user.c.last_name).label('full_name')
]).where(user.c.id == 123))
由于full_name在很多地方使用,所以这种代码有很多副本。
我想知道在SQLAlchemy中是否有一种方法可以创建一个计算列,这样我就可以像其他普通列一样方便地使用它,每当我引用user.c.full_name时,SQLAlchemy会自动将其转换为(user.c.first_name + user.c.last_name).label('full_name')
sql = (select([
user.c.id,
user.c.full_name
]).where(user.c.id == 123))
我在 SQLAlchemy ORM 中使用 column_property 或 hybrid_property 搜索并找到了一些解决方案。我的不同之处在于我只能使用 SQLAlchemy Core。
【问题讨论】:
标签: python database orm sqlalchemy