无法为映射表组装任何主键列
发布于 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 个回答
-
一个表中不能有两个主键。相反,您必须使用复合主键。可以通过
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")