小编uni*_*rio的帖子

SQLAlchemy 无法连接两个表之间有两个外键

owner_id = Column(Integer, ForeignKey('employees.employee_id'))由于Manager 类中的这一行,下面的代码不起作用。SQLAlchemy 生成错误消息:

AmbigeousForeignKeysError:无法确定“员工”和>“经理”之间的连接;表之间有多个外键约束关系。请明确指定此连接的“onclause”。

请帮忙解决这个问题!

这个想法是,每个经理都是一名员工,为某个所有者工作。可能有零个、一个或多个经理为所有者工作。

from sqlalchemy import (Table, Column, Integer, String, create_engine,
    MetaData, ForeignKey)
from sqlalchemy.orm import mapper, create_session
from sqlalchemy.ext.declarative import declarative_base

e = create_engine('sqlite:////tmp/foo.db', echo=True)
Base = declarative_base(bind=e)

class Employee(Base):
    __tablename__ = 'employees'

    employee_id = Column(Integer, primary_key=True)
    name = Column(String(50))
    type = Column(String(30), nullable=False)

    __mapper_args__ = {'polymorphic_on': type}

    def __init__(self, name):
        self.name = name

class Manager(Employee):
    __tablename__ = 'managers'
    __mapper_args__ = {'polymorphic_identity': 'manager'}

    employee_id = Column(Integer, ForeignKey('employees.employee_id'),
                         primary_key=True)
    manager_data = Column(String(50))

    owner_id …
Run Code Online (Sandbox Code Playgroud)

python sqlalchemy

3
推荐指数
1
解决办法
5048
查看次数

标签 统计

python ×1

sqlalchemy ×1