Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Flask的设置/配置文件中自定义模块、常量和数据库_Python_Settings_Flask - Fatal编程技术网

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

Python 在Flask的设置/配置文件中自定义模块、常量和数据库,python,settings,flask,Python,Settings,Flask,过去一周我一直在玩烧瓶。为了好玩,我尝试实现以下内容。是的,我知道它非常像Django风格,也许不适合作为一个微观框架 以下是我尝试做的一个示例: STATIC_PATH = '/static/' TEMPLATE_URL = '/template/' DATABASES = { 'DEBUG': { 'ENGINE': 'bla.sqlite3', 'NAME': 'koopics.db' }, 'DEMO': { 'ENGINE': 'bla.sqlite

过去一周我一直在玩烧瓶。为了好玩,我尝试实现以下内容。是的,我知道它非常像Django风格,也许不适合作为一个微观框架

以下是我尝试做的一个示例:

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',
]
我目前在自己的文件夹中使用
\uuuu init\uuuuuuuupy
定义了我的自定义应用程序


问题:是否可以让DBs工作并将“应用程序”作为设置和app.py的一部分加载

在处理任何其他设置之前,先加载您的设置。如果要根据请求切换DBs,则需要将此
If
放入模型/视图逻辑中

根据(您的设置看起来更像是
django
而不是普通的
flask
,所以我不确定这是否会起作用)您可以在模型中使用
\uuu bind\u key\uuuuuu
将该模型定向到特定的数据库

# 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
然后,如果设置中的
是合适的。

您忘记说“需要什么”。。。