在我的烧瓶应用程序中,我在每次开始时重新创建一个sqlite数据库 为此,我使用official webpage
上显示的代码我的项目结构如下所示
project_dir/
|-README.md
`-app/
|-StubbyServer.py (contains the flask root)
|-schema.sql
`- (all the other files)
现在我的StubbyServer.py
包含:
def get_db():
db = getattr(Flask, '_database', None)
if db is None:
db = Flask._database = sqlite3.connect(DATABASE)
with open('schema.sql', mode='r') as f:
db.cursor().executescript(f.read())
db.commit()
db.row_factory = sqlite3.Row
return db
如果我的工作目录是/path/project_dir/app
,则python StubbyServer.py
命令正常
如果我的工作目录是/path/project_dir
,则python app/StubbyServer.py
命令失败并显示:
文件“app / StubbyServer.py”,第43行,在get_db中 open('schema.sql',mode ='r')为f:
FileNotFoundError:[Errno 2]没有这样的文件或目录:'schema.sql'
我知道为什么会这样,但我不知道如何解决这个问题。 我希望我的烧瓶应用程序能够独立于我当前的工作目录而工作,我该如何实现?
答案 0 :(得分:2)
这个确切的用例恰好是烧瓶的/myapplication.py
/schema.sql
/static
/style.css
/templates
/layout.html
/index.html
API call文档中使用的示例,以及您问题中链接的蓝图文档。
具体而言,参考文档说:
要了解其工作原理,请考虑以下文件夹结构:
with app.open_resource('schema.sql') as f: contents = f.read() do_something_with(contents)
如果要打开schema.sql文件,请执行以下操作:
A