我正在关注本教程,但仍然设法搞砸了。去搞清楚。完成我们创建数据库的第三页之前的所有操作。我知道 init-db 是正确的格式,我已经在 venv 中安装了 flask,但我不知道哪里出错了。编辑:我已经完成了导出 db.pyimport sqlite3import clickfrom flask import current_app, gfrom flask.cli import with_appcontextdef get_db(): if 'db' not in g: g.db = sqlite3.connect( current_app.config['DATABASE'], detect_types=sqlite3.PARSE_DECLTYPES ) g.db.row_factory = sqlite3.Row return g.dbdef close_db(e=None): db = g.pop('db', None) if db is not None: db.close()def init_db(): db = get_db() with current_app.open_resource('schema.sql') as f: db.executescript(f.read().decode('utf8'))@click.command('init-db')@with_appcontextdef init_db_command(): #clear the existing data and create new tables init_db() click.echo('Initialized the database.')def init_app(app): app.teardown_appcontext(close_db) app.cli.add_command(init_db_command)init.pyimport osfrom flask import Flaskdef create_app(test_config=None): app = Flask(__name__, instance_relative_config=True) app.config.from_mapping( SECRET_KEY='dev', DATABASE=os.path.join(app.instance_path, 'flaskr.sqlite'), ) if test_config is None: app.config.from_pyfile('config.py', silent=True) else: app.config.from_mapping(test_config) try: os.makedirs(app.instance_path) except OSError: pass @app.route('/hello') def hello(): return 'Hello World' from . import db db.init_app(app) return app和模式.sqlDROP TABLE IF EXISTS user;DROP TABLE IF EXISTS post;CREATE TABLE user ( id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT UNIQUE NOT NULL, password TEXT NOT NULL);完整的错误代码:(venv) root@pi:/home/pi/flaskr# flask init-db用法:烧瓶[选项] 命令[参数] ...尝试使用“flask --help”寻求帮助。错误:没有这样的命令“init-db”。
1 回答
开满天机
TA贡献1786条经验 获得超13个赞
所以.. 这花了我一段时间来重新创建,但我已经弄清楚了。您在终端中的错误目录中。flask init-db 需要从 pi 而不是 flaskr 运行...这是假设您的 venv 环境在 pi 中。
添加回答
举报
0/150
提交
取消