擅长:python、mysql、java
<p>首先,不要直接在脚本中实例化Flask应用程序,而是使用<a href="http://flask.pocoo.org/docs/patterns/appfactories/" rel="nofollow">application factory</a>。这意味着您要创建一个以配置文件为参数的函数,并返回实例化的app对象。然后,创建不带参数的全局SQLAlchemy对象,并在创建应用程序<a href="http://pythonhosted.org/Flask-SQLAlchemy/contexts.html" rel="nofollow">as explained here</a>时对其进行配置。</p>
<pre><code>db = SQLAlchemy()
def create_app(configfile):
app = Flask(__name__)
app.config.from_pyfile(config, silent=True)
db.init_app(app)
# create routes, etc.
return app
</code></pre>
<p>要运行应用程序,只需执行以下操作:</p>
<pre><code>app = create_app('config.py')
app.run()
</code></pre>
<p>要运行unittests,可以执行以下操作:</p>
<pre><code>class Test(TestCase):
def setUp(self):
# init test database, etc.
app = create_app('test_config.py')
self.app = app.test_client()
def tearDown(self):
# delete test database, etc.
</code></pre>
<p>在我的例子中,我直接将SQLAlchemy用于作用域会话,而不是Flask SQLAlchemy。
我也这么做了,但是用<a href="http://flask.pocoo.org/snippets/22/" rel="nofollow">Lazy SQLAlchemy setup</a>。</p>