具有多个models.py的Flask应用程序的结构

时间:2013-02-25 16:49:12

标签: python flask

我目前有一个具有以下结构的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的模型调用可用:

from flask.ext.sqlalchemy import SQLAlchemy
db = SQLAlchemy()

class User(db.Model):
...

这样做意味着每个模型都有一个不同的db对象,这使得无法正确初始化我的应用程序。

如何构建项目,以便我可以拥有一个db对象,我的所有模型,测试以及create_app()中的__init__.py函数都会使用该对象?

1 个答案:

答案 0 :(得分:3)

这是一种方式:

  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):
    ...

这使用了explicit relative imports