第一次用 Flask 创建网站时,我一直想出“错误:创建数据库时没有这样的命令‘init-db’”

我正在关注本教程,但仍然设法搞砸了。去搞清楚。


完成我们创建数据库的第三页之前的所有操作。我知道 init-db 是正确的格式,我已经在 venv 中安装了 flask,但我不知道哪里出错了。编辑:我已经完成了导出 db.py


import sqlite3

import click

from flask import current_app, g

from flask.cli import with_appcontext



def 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.db



def 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_appcontext

def 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.py


import os

from flask import Flask


def 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

和模式.sql


DROP 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”。


慕森王
浏览 100回答 1
1回答

开满天机

所以.. 这花了我一段时间来重新创建,但我已经弄清楚了。您在终端中的错误目录中。flask init-db 需要从 pi 而不是 flaskr 运行...这是假设您的 venv 环境在 pi 中。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python