use*_*559 5 python sql sqlalchemy
SQLAlchemy新手在这里.
我正在尝试定义一个表示表数据子集的模型子类.具体来说,我希望子类映射给定ID的最新行.
例如,假设我有以下模型:
class AddressHistory(Base):
__table__ = 'address_table'
date = Column(Date, index=True, nullable=False)
id = Column(BigInteger, primary_key=True)
street = Column(String(2000))
city = Column(String(2000))
state = Column(String(2000))
zip = Column(Integer)
Run Code Online (Sandbox Code Playgroud)
我想要做的是定义这个模型的子类,它代表给定id的最新地址记录:
class MostRecentAddress(Address):
“””
Represents a row in AddressHistory with the most recent date for a given id.
”””
Run Code Online (Sandbox Code Playgroud)
是否有某种子查询我可以传递给mapper_args?或者有没有办法将表定义为select语句?
您正在寻找单表继承。
https://docs.sqlalchemy.org/en/13/orm/inheritance.html#single-table-inheritance
您的代码示例几乎完全准确地说明了如何执行此操作。您只需要添加映射器即可。
class Person(Base):
__tablename__ = 'people'
id = Column(Integer, primary_key=True)
discriminator = Column('type', String(50))
__mapper_args__ = {'polymorphic_on': discriminator}
class Engineer(Person):
__mapper_args__ = {'polymorphic_identity': 'engineer'}
primary_language = Column(String(50))
Run Code Online (Sandbox Code Playgroud)