python - 选择具有 SQLAlchemy 继承的特定列
问题描述
使用 SQLAlchemy 文档中的示例进行继承,我将如何Employee
仅查询所有派生类的id
和engineer_info
列,包括那些没有该engineer_info
列的类?
class Employee(Base):
__tablename__ = 'employee'
id = Column(Integer, primary_key=True)
name = Column(String(50))
type = Column(String(50))
__mapper_args__ = {
'polymorphic_identity':'employee',
'polymorphic_on':type,
}
class Engineer(Employee):
__tablename__ = 'engineer'
id = Column(Integer, ForeignKey('employee.id'), primary_key=True)
engineer_info = Column(String(50))
__mapper_args__ = {
'polymorphic_identity':'engineer',
}
class Manager(Employee):
__tablename__ = 'manager'
id = Column(Integer, ForeignKey('employee.id'), primary_key=True)
manager_data = Column(String(50))
__mapper_args__ = {
'polymorphic_identity':'manager',
}
解决方案
如果您在/连接中将employee
表显式连接到表,看起来您可以执行此操作,例如:engineer
left
outer
session.query(Employee.id, Engineer.engineer_info).join(Engineer, isouter=True).all()
或者:
session.query(Employee.id, Engineer.engineer_info).outerjoin(Engineer).all()
对于未来的可搜索性:另请参阅我通过谷歌搜索“sqlalchemy left join subclass”找到的所有列上的 SQLAlchemy 继承过滤器
推荐阅读
- jquery - 带有特殊字符的 jQuery 平滑滚动
- r - 如何在 R 中交叉加入
- java - 在 Spring 中使用 ClientHttpRequestInterceptor 时如何中止请求?
- sql - SQLite UPDATE WHERE 查询
- python - 在 Python 中使用 OpenGL 渲染纹理不是
- c# - Url.Action() 在 ASP.NET Core 3.0 中返回 null
- java - JDBCTemplate 执行查询后关闭准备好的语句
- python-3.x - Python tkinter ListBox 高度不起作用
- node.js - 访问 NODE.JS 中不存在的文件时如何显示消息?
- sql - 在 SQL Server 中导入平面文件时,有没有办法一次更改所有数据类型?