在过去的一周里我一直在玩酒瓶。为了好玩,我正在尝试实现以下内容。是的,我知道这很像Django-esque,也许不适合于微观框架。
下面是我想要做的事情的一个例子:
STATIC_PATH = '/static/'
TEMPLATE_URL = '/template/'
DATABASES = {
'DEBUG': {
'ENGINE': 'bla.sqlite3',
'NAME': 'koopics.db'
},
'DEMO': {
'ENGINE': 'bla.sqlite3',
'NAME': 'somedb'
},
'PRODUCTION': {
'ENGINE': 'bla.psycopg2',
'NAME': 'somedb',
'host': 'host',
'username': 'host',
'password': 'host',
},
}
MODE = 'Demo'
#TODO: put an IF statement here to provide the connection mechanism for the db
# depending on what is required
INSTALLED_APPS = [
'Flask-SQLAlchemy',
'Flask-DebugToolbar',
'Flask-Mail',
'Flask-Cache',
'Flask-Celery',
'my_custom_module',
]我现在用__init__.py在自己的文件夹中定义了我的自定义应用程序。
问题:是否有可能让数据库正常工作,并将“应用程序”作为设置和app.py的一部分加载?
发布于 2013-03-07 12:33:37
首先加载设置,然后再处理其他设置。如果希望根据请求切换DB,则需要将此if放入模型/视图逻辑中。
根据文档 (您的设置看起来更像django而不是普通的flask,所以我不确定这是否有效),您可以在模型中使用__bind_key__将模型定向到特定的DB
# settings.py
SQLALCHEMY_BINDS = {
'DEBUG': 'sqlite:////path/to/koopics.db',
'DEMO': 'sqlite:////path/to/somedb.db'
}在你的模型里
# model
class DebugModel(db.Model):
__bind_key__ = 'DEBUG'
id = db.Column(db.Integer, primary_key=True)
debug_value = db.Column(db.String(80), unique=True)但是,如果您的意思是希望它访问DB --一种方式用于生产,另一种用于开发,那么类似的
import os
if os.environ('MACHINE_NAME', '') == 'PRODUCTION':
# set up production db
else:
# set up development db那么在您的设置中设置一个if是合适的。
https://stackoverflow.com/questions/15270460
复制相似问题