照着 Flask 官方的文档写的代码,运行出错,请各位老师帮忙看看

2014-08-03 13:39:33 +08:00
 yanest
http://dormousehole.readthedocs.org/en/latest/tutorial/dbinit.html#tutorial-dbinit
照着这个弄的。
初始化数据库出错,初学者不明白问题出在哪,请帮忙指点一下

代码如下:
>>> from flaskr import init_db
>>> init_db()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "flaskr.py", line 22, in init_db
with closing(connect_db()) as db:
File "flaskr.py", line 19, in connect_db
return sqlite3.connect(app.config['DATABASE'])
KeyError: 'DATABASE'
>>>

# flaskr.py

import sqlite3
from flask import Flask, request, session, g, redirect, url_for, \
abort, render_template, flash
from contextlib import closing

# configuration
DATABASE = '/tmp/flaskr.db'
DEBUG = True
SECRET_KEY = 'development key'
USERNAME = 'admin'
PASSWORD = 'default'

#create out little application :)
app = Flask(__name__)
app.config.from_envvar('FLASKR_SETTINGS', silent=True)

def connect_db():
return sqlite3.connect(app.config['DATABASE'])

def init_db():
with closing(connect_db()) as db:
with app.open_resource('schema.sql', mode='r') as f:
db.cursor().executescript(f.read())
db.commit()

if __name__ == '__main__':
app.run()
4975 次点击
所在节点    Python
6 条回复
cloverstd
2014-08-03 13:53:32 +08:00
你有 export FLASKR_SETTINGS=/path/to/settings.cfg 吗
yanest
2014-08-03 14:14:51 +08:00
@cloverstd 没有啊,文档李没说需要这么干啊
notedit
2014-08-03 14:55:15 +08:00
你把app.config 打印出来就知道了 出错的意思是没有 DATABASE

没看到你设置 FLASKR_SETTINGS 当然会出错
notedit
2014-08-03 15:01:04 +08:00
"""
Simply define the environment variable FLASKR_SETTINGS that points to a config file to be loaded. The silent switch just tells Flask to not complain if no such environment key is set.

"""
yanest
2014-08-03 15:34:43 +08:00
@notedit 好像有点懂了,我改一下试试。
改成app.config.from_object(__name__) 就可以了吧
LokiStone
2016-01-11 01:12:54 +08:00
@yanest 我就是按着教程来的,可是改成 app.config.from_object(__name__)还是不行啊,还是报数据库错误
File "/Users/mac/PycharmProjects/flaskr/flaskr.py", line 21, in connect_db
return sqlite3.connect(app.config['DATABASE'])
KeyError: 'DATABASE'
请问您最后是怎嘛解决这个问题啊,拜托了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/125877

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX