前提
Flaskの初心者です。データベース定義の部分でつまずいています。db.create_all()で苦戦されている記事も参照しましたが、環境(あるいはコード)をどのように構築したらいいのか悩んでいます。どなたかアドバイスお願いいたします。
該当のソースコード
from flask import Flask, render_template from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///todo.db' db = SQLAlchemy(app) class Post(db.model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(30), nullable=False) detail = db.Column(db.String(100)) due = db.Column(db.DateTime, nullable=False) @app.route('/') def index(): return render_template('index.html') if __name__ == "__main__": app.run(debug=True)
対話シェルで
from app import db→db.create_all()を
を実行すると下記のようにエラー表示されます。
発生している問題・エラーメッセージ
Traceback
1 File "<stdin>", line 1, in <module> 2 File "C:\Users\user\Desktop\flask-todo-app\env\lib\site-packages\flask_sqlalchemy\extension.py", line 868, in create_all 3 self._call_for_binds(bind_key, "create_all") 4 File "C:\Users\user\Desktop\flask-todo-app\env\lib\site-packages\flask_sqlalchemy\extension.py", line 839, in _call_for_binds 5 engine = self.engines[key] 6 File "C:\Users\user\Desktop\flask-todo-app\env\lib\site-packages\flask_sqlalchemy\extension.py", line 628, in engines 7 app = current_app._get_current_object() # type: ignore[attr-defined] 8 File "C:\Users\user\Desktop\flask-todo-app\env\lib\site-packages\werkzeug\local.py", line 513, in _get_current_object 9 raise RuntimeError(unbound_message) from None 10RuntimeError: Working outside of application context. 11 12This typically means that you attempted to use functionality that needed 13the current application. To solve this, set up an application context 14with app.app_context(). See the documentation for more information.
version
Python 3.8.10
Flask 2.2.2
Flask-SQLAlchemy 3.0.2
greenlet 1.1.3.post0
importlib-metadata 5.0.0
itsdangerous 2.1.2
Jinja2 3.1.2
MarkupSafe 2.1.1
pip 22.2.2
setuptools 65.3.0
SQLAlchemy 1.4.42
回答1件
あなたの回答
tips
プレビュー