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

Ale*_*Emm 3 python global-variables

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

databaseUrl = appPath + '/db/timey.db' 
Run Code Online (Sandbox Code Playgroud)

这指向我的SQLite DB.

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

我试图使databaseUrl全局化,但我不喜欢这个想法,并且还没有真正让它像这样工作.

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

谢谢!

dm0*_*514 6

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

# settings.py

import os
PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))
DATABASE_URL = ''
DATABASE_USER = ''
DATABSE_PASSWORD = ''
Run Code Online (Sandbox Code Playgroud)

等等

from myproject import settings 
settings.DATABASE_URL
Run Code Online (Sandbox Code Playgroud)

这就是django和scrapy用于存储项目数据库配置设置以及所有其他项目设置的功能

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

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

在您的settings.py文件中

try:
  from local_settings import *
except ImportError:
  pass
Run Code Online (Sandbox Code Playgroud)

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