Flask应用程序中多个models.py的结构
我现在有一个Flask应用,结构如下:
deploy/
api/
customer/
models.py
contact/
models.py
campaign/
models.py
activity/
models.py
__init__.py
database.py
tests/
test_api.py
因为我有很多模型,所以我把它们分成了不同的文件,这导致我在初始化数据库时遇到了一些问题。
在我的每个模型里,我都这样做,以便让Flask-SQLAlchemy的Model调用可用:
from flask.ext.sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class User(db.Model):
...
这样做的结果是,每个模型都有一个不同的db
对象,这让我的应用无法正确初始化。
我该如何组织我的项目,才能让所有模型、测试和__init__.py
中的create_app()
函数都使用同一个db
对象呢?
1 个回答
4
这里有一种方法:
myapp/ __init__.py database.py app.py model1/ __init__.py models.py model2/ __init__.py models.py
在database.py文件中:
from flask.ext.sqlalchemy import SQLAlchemy
db = SQLAlchemy()
在不同的models.py文件中:
from ..database import db
class User(db.Model):
...
这使用了显式相对导入的方式。