2

我目前有一个具有以下结构的 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

4

1 回答 1

3

这是一种方法:

  我的应用程序/
    __init__.py
    数据库.py
    应用程序.py
    型号1/
      __init__.py
      模型.py
    型号2/
      __init__.py
      模型.py

在 database.py 中:

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

在各种 models.py 文件中:

from ..database import db

class User(db.Model):
    ...

这利用了显式的相对导入

于 2013-02-25T16:59:26.680 回答