无法为映射表组装任何主键列

发布于 2021-01-29 17:45:24

当我尝试创建数据库架构迁移时,遇到了这个奇怪的错误。您能帮我找出问题所在吗?

$ python app.py db upgrade
[skipped]
sqlalchemy.exc.ArgumentError: Mapper Mapper|EssayStateAssociations|essay_associations could not assemble any primary key columns for mapped table 'essay_associations'

我的模特:

class EssayStateAssociations(db.Model):
    __tablename__ = 'essay_associations'

    application_essay_id = db.Column(
        db.Integer,
        db.ForeignKey("application_essay.id"),
        primary_key=True),
    theme_essay_id = db.Column(
        db.Integer,
        db.ForeignKey("theme_essay.id"),
        primary_key=True),
    state = db.Column(db.String, default="pending")
关注者
0
被浏览
48
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    一个表中不能有两个主键。相反,您必须使用复合主键。可以通过PrimaryKeyConstraint在模型中添加,如下所示来完成此操作(请记住在闭合括号之前,请添加逗号__table_args__

    from db import PrimaryKeyConstraint
    
    class EssayStateAssociations(db.Model):
        __tablename__ = 'essay_associations'
        __table_args__ = (
            PrimaryKeyConstraint('application_essay_id', 'theme_essay_id'),
        )
    
        application_essay_id = db.Column(
            db.Integer,
            db.ForeignKey("application_essay.id"))
        theme_essay_id = db.Column(
            db.Integer,
            db.ForeignKey("theme_essay.id"))
        state = db.Column(db.String, default="pending")
    


知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看