我正在關注本教程,但仍然設法搞砸了。去搞清楚。完成我們創建數據庫的第三頁之前的所有操作。我知道 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
提交
取消