在我的烧瓶应用程序中,我每次启动时都会重新创建一个sqlite数据库。
为此,我使用官方网页上显示的代码
我的项目结构如下所示
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
失败并显示:
在get_db中的文件“ app / StubbyServer.py”中,第43行
带有open(’ schema.sql ‘,mode =’r’),其开头为f:
FileNotFoundError:[Errno 2]没有此类文件或目录:’schema.sql’
我知道为什么会这样,但是我不知道该如何解决。我希望我的烧瓶应用程序能够独立于当前工作目录正常运行,该如何实现?
这个确切的用例恰好是flask的open_resource
API调用文档以及问题中链接的蓝图文档中使用的示例。
具体来说,参考文档说:
若要查看其工作原理,请考虑以下文件夹结构:
/myapplication.py
/schema.sql
/static
/style.css
/templates
/layout.html
/index.html
如果要打开schema.sql文件,请执行以下操作:
with app.open_resource('schema.sql') as f:
contents = f.read()
do_something_with(contents)
问题内容: 我正在开发Flask扩展名,我想从该扩展名在文件系统上项目的根路径中创建目录。 假设我们有这个目录结构 my_folder应该由扩展名动态创建,扩展名是一个测试实用程序,并将被测试的应用程序包装在/ tests目录中。但是,我正在努力确定扩展中项目的根路径。 现在,我试图从运行文件中猜测路径: 一旦在IDE中而不是manage.py中运行测试,这显然会中断。我可以简单地推断出相对于ap
X1.0新增 sp_get_relative_url($url) 功能: 获取域名后的地址,如http://thinkcmf.com/news.html,转化后为/news.html 参数: $url:要转化的url 返回: 类型string; 域名后的地址,如http://thinkcmf.com/news.html,转化后为/news.html
我在netbeans中运行java Web应用程序时遇到问题。每次按run,我都会收到以下消息: 正在取消部署 ...undeploy?path=/test FAIL - 无法删除 [/var/lib/tomcat8/webapps/test]。此文件的继续存在可能会导致问题。In-place deployment at /var/lib/tomcat8/webapps/test/build/we
问题内容: 我正在渲染一个模板,尝试使用外部样式表进行样式设置。文件结构如下。 mainpage.html看起来像这样 我的样式均未应用。它与html是我正在渲染的模板有关吗?python看起来像这样。 我知道这很有效,因为我仍然能够渲染模板。但是,当我尝试将样式代码从html的“ head”标记中的“样式”块移动到外部文件时,所有样式消失了,仅留下了一个html页面。有人看到我的文件结构有任何错
在我的烧瓶应用程序中。如果页面的路径为。我无法将js文件导入此页面的html文件,如下所示:
问题内容: 我正在编写一个servlet(特别是Scalatra)。在servlet中,我在目录中包含许多链接,该目录包含在每个页面中。我希望这些链接相对于应用程序基础。如果我使用诸如“ / foo”之类的链接,那么当从根目录(localhost:8080 /)提供servlet时一切正常,但是如果我从Jetty / Tomcat以及其他servlet(localhost:8080 / servl