问题描述
我是flask-migrate 的新手(Python 也是如此...),但我会说到点子上。
我曾经将所有模型存储在一个 models.py
文件中,但后来我决定将每个模型分离到其对应的文件中。
阅读此question后。我认为这将是 Flask-Migrate(或 Alembric)了解模型包中所有模块的一种快速方式。所以我这样做了,但是一旦我尝试了 flask db migrate
命令,生成的迁移文件只是删除了几个表,但不是全部。
这是项目结构:
├── app/
│ ├── __init__.py
│ └── api/
│ ├── __init__.py
│ ├── models/
│ │ ├── __init__.py
│ │ ├── model1.py
│ │ └── model2.py
│ ├── resources/
│ └── schemas/
└── run.py
run.py
from app import create_app
app = create_app()
app.run(port=5000)
app/__init__.py
from flask import Flask
from flask_migrate import Migrate
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
migrate = Migrate()
def create_app():
app = Flask(__name__)
db.init_app(app)
migrate.init_app(app,db)
# importing the models...
from .api import models # this should work?
# ... or do I have to manually write every single module?
return app
app/api/models/__init__.py
from os.path import dirname,basename,isfile,join
import glob
# Trying to apply what I learned from the referenced question...
modules = glob.glob(join(dirname(__file__),"*.py"))
__all__ = [
basename(f)[:-3] for f in modules if isfile(f) and not f.endswith("__init__.py")
]
app/api/models/ 中的模型文件
from app import db
class ExampleModel(db.Model):
# Model declarations goes here...
pass
所以...总结一下这个问题,是否有更好的方法来做到这一点,或者我应该导入 app/__init__.py
文件中的每个模块?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)