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

时间:2017-12-26 07:52:01

标签: python python-3.x flask

在此链接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模块一起,可以轻松找到文件。在这个例子中,我们将数据库放在它旁边。

任何人都可以通过示例解释它,因为我无法理解这些解释吗?

1 个答案:

答案 0 :(得分:0)

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