我有一个与 Flask-migrate 相关的问题。我正在使用 Flask 创建一组 Web 服务。我已经在 python 应用程序中将每个 Web 服务拆分到他自己的包中。
应用程序结构如下所示:
MyApp WS1 models.py WS2 models.py CommonPackage models.py
如何导入所有模块并初始化数据库?我试图手动导入它们,但不工作。我知道如果我分别从 WS1 或 Ws2 导入“应用程序”,它会起作用,但我想在一次操作中做到这一点,这可能吗?
在这里您可以找到 Flask-migrate 的代码:
#!virtualenv/bin/python
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate, MigrateCommand
from flask_script import Manager
from config import SQLALCHEMY_DATABASE_URI
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = SQLALCHEMY_DATABASE_URI
db = SQLAlchemy(app)
migrate = Migrate(app, db)
manager = Manager(app)
manager.add_command('db', MigrateCommand)
from WS1.models import Class1, Class2, Class3 <--- This is not importing
from WS2.models import Class4, Class5, Class6 <--- This is not importing
if __name__=='__main__':
manager.run()
这是我初始化 SQLAlchemy 会话的模块:
from sqlalchemy import create_engine
from sqlalchemy.orm import scoped_session, sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from config import SQLALCHEMY_DATABASE_URI
engine = create_engine(SQLALCHEMY_DATABASE_URI, convert_unicode = True)
db_session = scoped_session(sessionmaker(autocommit=False,
autoflush=False,
bind=engine))
Base = declarative_base()
Base.query = db_session.query_property()
所有模型都导入此模块并从 Base 继承。
Thanks a lot,
恩里科