我正在尝试扩展仅基于用户模型的基于烧瓶的项目https://github.com/hack4impact/flask-base/tree/master/app。我已经添加到项目中,以便dev数据库看起来像上面的截图。
我的模型文件夹由提供的用户类和miscellaneous.py组成。
我添加了包含以下内容的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'
我怎样才能使这个工作?
答案 0 :(得分:0)
事实证明,我的重构导致了一个问题,一旦我意识到这一点,我删除了新创建的数据库和迁移文件夹并重新:
python manage.py db init
python manage.py db migrate
这很有效,创建了一个新的数据库,并为所有表创建了迁移。