Flask-迁移无法识别模型

时间:2018-02-05 17:49:48

标签: python flask flask-sqlalchemy alembic flask-migrate

enter image description here

我正在尝试扩展仅基于用户模型的基于烧瓶的项目https://github.com/hack4impact/flask-base/tree/master/app。我已经添加到项目中,以便dev数据库看起来像上面的截图。

我的模型文件夹由提供的用户类和miscellaneous.py组成。

enter image description here

我添加了包含以下内容的other_models.py:

class Account(db.Model):
    __tablename__ = 'accounts'
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(140))
    type = db.Column(db.String(1400))


class Postings(db.Model):
    __tablename__ = 'postings'
    index = db.Column(db.Integer, primary_key=True)
    property_name = db.Column(db.Text)


class Property(db.Model):
    __tablename__ = 'properties'
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(140))

问题是我现在想要使用内置的flask-migrate进行迁移,以简化部署,但并非所有模型都被识别。跑完后:

python manage.py db init
python manage.py db migrate

我明白了:

INFO  [alembic.runtime.migration] Context impl SQLiteImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
INFO  [alembic.autogenerate.compare] Detected added table 'properties'

表格迁移的其余部分在哪里?

在app / models / init .py中,我有

"""
These imports enable us to make all defined models members of the models
module (as opposed to just their python files)
"""

from .user import *  # noqa
from .miscellaneous import * # noqa
from .other_models import Postings, Property,Account

基于https://github.com/miguelgrinberg/Flask-Migrate/issues/31,我尝试将原始数据库从data-dev.sqlite重命名为o-data-dev.sqlite

我删除了迁移文件夹并重新启用:

python manage.py db init
python manage.py db migrate

但我得到了完全相同的结果。

INFO  [alembic.runtime.migration] Context impl SQLiteImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
INFO  [alembic.autogenerate.compare] Detected added table 'properties'

我怎样才能使这个工作?

1 个答案:

答案 0 :(得分:0)

事实证明,我的重构导致了一个问题,一旦我意识到这一点,我删除了新创建的数据库和迁移文件夹并重新:

python manage.py db init
python manage.py db migrate

这很有效,创建了一个新的数据库,并为所有表创建了迁移。