首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ForeignKey添加模型时,flask-migrate不起作用

使用ForeignKey添加模型时,flask-migrate不起作用
EN

Stack Overflow用户
提问于 2014-08-25 21:52:19
回答 2查看 861关注 0票数 0
代码语言:javascript
复制
class User(db.Model):
    __tablename__ = 'user'
    id = db.Column(db.Integer, primary_key=True)
    email = db.Column(db.String(64), unique=True)
    # 是不是应该加密下,不能明文存储?应该设置多长的空间? 14.7.18 4:22 by lee
    password = db.Column(db.String(100))
    nickname = db.Column(db.String(64))
    school = db.Column(db.String(20))
    sex = db.Column(db.String(5))
    status = db.Column(db.String(10))
    grade = db.Column(db.String(18))

我有一个剩余的数据库。然后我将模型添加到models.py:

代码语言:javascript
复制
class PubSquare(db.Model):
    id = db.Column(db.Integer, primary_key=True)

    author_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    author = db.relationship('User', backref=db.backref('publish'))

    subject = db.Column(db.String(100))
    timestamp = db.Column(db.DateTime, default=datetime.datetime.now)

然后我运行迁移脚本,它调用bug:

NoReferencedTableError: Foreign key associated with column 'pub_square.author_id' could not find table 'user' with which to generate a foreign key to target column 'id'

在此之前,我这次可以成功地为几个times.But运行迁移脚本,当它引用外键关系时,它不工作。

为了证明我的模型代码是正确的,我重新创建了数据库,它是有效的。所以,这是对这个bug的flask-migrate调用。

EN

回答 2

Stack Overflow用户

发布于 2014-08-25 21:55:15

根据我所看到的,user表没有被创建(could not find table 'user' with which to generate a foreign key to target column 'id')。尝试先迁移User,然后创建user表,然后执行PubSquare

编辑:你有没有试过阅读文档?http://sqlalchemy-migrate.readthedocs.org/en/v0.7.1/changeset.html#constraint看起来很有帮助。

票数 0
EN

Stack Overflow用户

发布于 2014-08-25 22:42:59

@knight我们已经迁移了很多次。‘user’表在数据库中。但是我发现如果我像这样写代码

代码语言:javascript
复制
author_id = db.Column(db.Integer)

然后迁移,这没什么问题。然后添加如下代码

代码语言:javascript
复制
author_id = db.Column(db.Integer, db.ForeignKey('user.id'))

并再次迁移,它通过了。这很奇怪。我不知道为什么。

我们的迁移代码是

代码语言:javascript
复制
api.update_db_from_model(SQLALCHEMY_DATABASE_URI, SQLALCHEMY_MIGRATE_REPO, db.metadata)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25487475

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档