首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自定义瓶的设置/配置文件中的模块、常量和数据库

自定义瓶的设置/配置文件中的模块、常量和数据库
EN

Stack Overflow用户
提问于 2013-03-07 11:50:50
回答 1查看 316关注 0票数 0

在过去的一周里我一直在玩酒瓶。为了好玩,我正在尝试实现以下内容。是的,我知道这很像Django-esque,也许不适合于微观框架。

下面是我想要做的事情的一个例子:

代码语言:javascript
复制
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的一部分加载?

EN

回答 1

Stack Overflow用户

发布于 2013-03-07 12:33:37

首先加载设置,然后再处理其他设置。如果希望根据请求切换DB,则需要将此if放入模型/视图逻辑中。

根据文档 (您的设置看起来更像django而不是普通的flask,所以我不确定这是否有效),您可以在模型中使用__bind_key__将模型定向到特定的DB

代码语言:javascript
复制
# settings.py
SQLALCHEMY_BINDS = {
    'DEBUG': 'sqlite:////path/to/koopics.db',
    'DEMO': 'sqlite:////path/to/somedb.db'
}

在你的模型里

代码语言:javascript
复制
# 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 --一种方式用于生产,另一种用于开发,那么类似的

代码语言:javascript
复制
import os

if os.environ('MACHINE_NAME', '') == 'PRODUCTION':
    # set up production db
else:
    # set up development db

那么在您的设置中设置一个if是合适的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15270460

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档