Tutorial link: http://flask.pocoo.org/docs/0.11/tutorial/dbinit/#tutorial-dbinit
I am following the Flask tutorial. This is the current setup of my python script. At the end of the tutorial, I am trying to initialize the database. But for some reason, I kept on getting the same error.
# all the imports
import os
import sqlite3
from flask import Flask, request, session, g, redirect, url_for, abort, \
render_template, flash
# create our little application :)
app = Flask(__name__)
app.config.from_object(__name__)
# Load default config and override config from an environment variable
app.config.update(dict(
DATABASE=os.path.join(app.root_path, 'flaskr.db'),
SECRET_KEY='development key',
USERNAME='admin',
PASSWORD='default'
))
app.config.from_envvar('FLASKR_SETTINGS', silent=True)
def connect_db():
"""Connects to the specific database."""
rv = sqlite3.connect(app.config['DATABASE'])
rv.row_factory = sqlite3.Row
return rv
def init_db():
db = get_db()
with app.open_resource('schema.sql', mode='r') as f:
db.cursor().executescript(f.read())
db.commit()
@app.cli.command('initdb')
def initdb_command():
"""Initializes the database."""
init_db()
print 'Initialized the database.'
def get_db():
"""Opens a new database connection if there is none yet for the
current application context.
"""
if not hasattr(g, 'sqlite_db'):
g.sqlite_db = connect_db()
return g.sqlite_db
@app.teardown_appcontext
def close_db(error):
"""Closes the database again at the end of the request."""
if hasattr(g, 'sqlite_db'):
g.sqlite_db.close()
This is the input of my command:
flask initdb
This is the output:
Usage: flask [OPTIONS] COMMAND [ARGS]...
Error: No such command "initdb"
I think you should follow this:
edit the configuration in the flaskr.py
file or
export an FLASKR_SETTINGS
environment variable
pointing to a configuration file.
install the app from the root of the project directory
pip install --editable .
Instruct flask to use the right application
export FLASK_APP=flaskr
initialize the database with this command:
flask initdb
now you can run flaskr:
flask run
Pay attention to install --editable
correctly. I don't see the "." the first time.
the correct expression should be:
export FLASK_APP=flaskr.py
Note: no spaces around =
.
Following screenshot show you outputs with different envvar FLASK_APP :
Ran into the same issue, fixed it with
python3 -m flask initdb
I had to do everything for the tutorial with python -m flask <command>
I'm guessing its something to do with python3 instead of python2 but I'm new to python so not super sure.
In my case, following works:
export FLASK_APP=flaskr.flaskr
flask initdb
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With