用于程序范围设置的Python中的“真实”全局变量

时间:2013-01-24 18:07:04

标签: python global-variables

我在主执行文件中有这个:

databaseUrl = appPath + '/db/timey.db' 

指向我的SQLite DB。

我已经做了一些封装来访问我的模型(Data / DB)。所以在databaseURL最终被使用之前,我需要从 main - >传递它view.py - > model.py - > db.py. 这将是愚蠢的,因为例如我的视图类不需要知道我的数据库或其路径。那么,什么是一种适当的方法来实际使这条路径“全局”可访问而不会一直传递它?

我尝试将databaseUrl设为全局,但我不喜欢这个想法,并且还没有真正让它像这样工作。

将信息存储在外部文件中会是一种过度杀伤,因为它是唯一的(常量!)全局使用变量。

谢谢!

1 个答案:

答案 0 :(得分:6)

我不认为将它存储在外部文件中会有点过分。我认为有一个设置或配置文件是有帮助的

# settings.py

import os
PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))
DATABASE_URL = ''
DATABASE_USER = ''
DATABSE_PASSWORD = ''

from myproject import settings 
settings.DATABASE_URL

django和scrapy用于存储项目数据库配置设置和所有其他项目设置

另外,如果你有一个数据库类,将这些设置存储在其中是否有意义?我不知道。

settings.py文件可让您轻松设置开发/本地数据库网址。 为此,您可以拥有一个local_settings.py文件,该文件永远不会置于版本控制之下或打包在您的项目中

你的settings.py文件中的

try:
  from local_settings import *
except ImportError:
  pass

然后在local_settings.py中你可以覆盖DATABASE_URL作为你的开发数据库!!这是一个django项目大会