【问题标题】:flask database reset migrate烧瓶数据库重置迁移
【发布时间】:2019-04-27 07:28:36
【问题描述】:

我已经为 Flask 应用程序创建了一个数据库,

class Post(db.Model, SearchableMixin):
    __searchable__ = ['body']
    id = db.Column(db.Integer, primary_key=True)
    body = db.Column(db.String(140))
    timestamp = db.Column(db.DateTime, index=True, default=datetime.utcnow)
    user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
    language = db.Column(db.String(5))
    # for the comment foreign key
    comment = db.relationship('Comment', foreign_keys = 'Comment.post_id', 
        backref = 'post', lazy = 'dynamic')
    photo = db.relationship('Photo', foreign_keys = 'Photo.post_idn', 
        backref = 'post', lazy = 'dynamic')

    def __repr__(self):
        return "<Post {}>".format(self.body)

class Photo(db.Model):
        id = db.Column(db.Integer, primary_key = True)
        user_id = db.Column(db.Integer, db.ForeignKey('user.id'))
        photo_url = db.Column(db.String(200))
        upload_time = db.Column(db.DateTime, index=True, default=datetime.utcnow)
        new_field = db.Column(db.String(100))
        post_id = db.Column(db.Integer, db.ForeignKey('post.id'))

        def __repr__(self):
            return '<Photo {}>'.format(self.photo_url)

当我运行烧瓶数据库迁移和升级时,它指出

[2018-11-25 21:07:03,439] init中的INFO:微博启动INFO [alembic.runtime.migration] 上下文实现 SQLiteImpl。信息 [alembic.runtime.migration] 将采用非事务性 DDL。

但是,当我尝试在烧瓶外壳中运行 Photo.query.all() 时,它给了我以下错误“没有这样的列:post_id”

我相信这是一个数据库迁移问题。有人知道我应该怎么做吗?

我愿意删除整个数据库并重新迁移所有内容。有人可以建议我如何做到这一点。谢谢。

【问题讨论】:

    标签: python database flask database-migration


    【解决方案1】:

    您已创建 post_id 作为外键。因此,您必须为 post db 表创建一个 Post 模型,其中包含一个名为 id 的列。

    【讨论】:

    • 我也有 Post 模型。对不起,我没有在上面发帖。我已经更新了。
    • 在 Post 表中,您是否错误地提到了 foreign_keys = 'Photo.post_idn'。 'idn' -- 这是错误的,因为它指的是 post_idn 而不是 post_id。您可以简单地将外键关系称为 -- photo = db.relationship('Photo', backref='post', lazy='dynamic')
    猜你喜欢
    • 1970-01-01
    • 2018-10-26
    • 2016-09-02
    • 1970-01-01
    • 1970-01-01
    • 2019-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多