flask数据库重置迁移

时间:2018-11-25 13:10:10

标签: python database flask database-migration

我已经为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)

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

  

[2018-11-25 21:07:03,439] init 中的信息:微博启动信息   [alembic.runtime.migration]上下文隐含SQLiteImpl。信息   [alembic.runtime.migration]将采用非交易DDL。

但是,当我尝试在烧瓶外壳中运行Photo.query.all()时,出现以下错误“ No such column:post_id”

我认为这是数据库迁移问题。有人知道我该怎么办吗?

我愿意删除整个数据库,然后再次重新迁移所有内容。有人可以建议我怎么做。谢谢。

1 个答案:

答案 0 :(得分:0)

您已将post_id创建为外键。因此,您必须使用名为id的列为post db表创建Post模型。