【发布时间】:2020-01-03 23:32:54
【问题描述】:
我在部门表中有一个复合索引,并希望将此列(唯一的)引用为员工表中的外键。问题是flask migrate不识别复合索引?
部门表:
class Department(db.Model):
__tablename__ = "departments"
id = db.Column(db.Integer, primary_key=True)
dep_name = db.Column(db.String(250), nullable=False)
employees = db.relationship('Employee',
backref='department',
lazy='dynamic')
__table_args__ = (
db.Index('dep_name_id', id, dep_name),
db.UniqueConstraint(id, dep_name),
)
员工表:
class Employee(db.Model):
__tablename__ = "employees"
someinfo = db.Column(db.String(ID_LEN), primary_key=True)
department_id = db.Column(db.String(500), db.ForeignKey('departments.dep_name_id'))
但是在运行flask db migrate 之后,我收到以下错误(无法识别复合索引列!):
sqlalchemy.exc.NoReferencedColumnError: Could not initialize target column for ForeignKey 'deparments.dep_name_id' on table 'employees':
table 'departments' has no column named 'dep_name_id'
【问题讨论】:
-
dep_name_id不是列,是索引,所以不能在 DDL 级别引用。此外,我认为你应该只使用department.id作为 FK 并通过关系创建任何你想要的东西。 -
好的,这是有道理的。我仍然想将两列引用为 FK。我该怎么做?
-
抱歉,回复晚了,
标签: python indexing sqlalchemy foreign-keys