我已经反映了现有数据库并覆盖了一些列。 有人可以告诉我以下是什么问题吗?
metadata = MetaData(engine)
class User(Base):
__tablename__ = 'users'
__table__ = Table('dim_user', metadata,
Column('user_id', Integer, primary_key=True),
autoload=True)
projects = relationship('Project', back_populates='users')
class Project(Base):
__tablename__ = 'projects'
__table__ = Table('dim_project', metadata,
Column('project_id', Integer, primary_key=True),
Column('user_id', Integer, ForeignKey('users.user_id')),
autoload=True)
当我尝试查询任何内容时:
NoForeignKeysError: Could not determine join condition between parent/child tables on relationship User.projects - there are no foreign keys linking these tables. Ensure that referencing columns are associated with a ForeignKey or ForeignKeyConstraint, or specify a 'primaryjoin' expression.
答案 0 :(得分:0)
正如@ ilja-everilä已经试图在他的评论中传达的那样,你的模型是不合理的:你明确定义了__table__
属性,它覆盖了__tablename__
属性 - 你必须找出< em>哪个是正确的。在ForeignKey
定义中,您引用的是__tablename__
User
,而不是__table__
定义。
在relationship
的{{1}}定义中,您没有明确引用User.projects
或加入条件,并且由于您的元数据混乱(见上文),sqlalchemy无法自动确定你想要的。