为什么os.path.join(app.root_path,'flaskr.db')? [重复]

问题描述 投票:0回答:1

在这个链接http://flask.pocoo.org/docs/0.12/tutorial/setup/#tutorial-setup

在flaskr.py中的文件中:

app = Flask(__name__) # create the application instance :)
app.config.from_object(__name__) # load config from this file , flaskr.py

# Load default config and override config from an environment variable
app.config.update(dict(
  DATABASE=os.path.join(app.root_path, 'flaskr.db'),
  SECRET_KEY='development key',
  USERNAME='admin',
  PASSWORD='default'
))
app.config.from_envvar('FLASKR_SETTINGS', silent=True)

线的解释

DATABASE=os.path.join(app.root_path, 'flaskr.db'),

是:

操作系统知道每个进程的当前工作目录的概念。遗憾的是,您不能在Web应用程序中依赖于此,因为您可能在同一进程中有多个应用程序。

因此,app.root_path属性可用于获取应用程序的路径。与os.path模块一起,可以轻松找到文件。在此示例中,我们将数据库放在它旁边。

任何人都可以用例子解释它,因为我无法理解这个解释?

python python-3.x flask
1个回答
0
投票

我理解为:在正常程序中,你首先要做os.chdir(PATH),然后打开flaskr.db。但是,当Flask在一个进程中启动多个应用程序(也就是app)时,每个应用程序都在一个单独的线程中,但它们共享与当前目录相同的“当前目录”是每个进程而不是每个线程。为了保存,您应该始终使用绝对目录并使用app.root_path

© www.soinside.com 2019 - 2024. All rights reserved.