質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

SQLAlchemy

SQLAlchemyとはPython 用のORMライブラリです。MIT Licenceのオープンソースとして提供されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

解決済

【Flask】MySQLに接続し、テーブルを作成しようとすると、RuntimeErrorが出ます。

退会済みユーザー

退会済みユーザー

総合スコア0

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

SQLAlchemy

SQLAlchemyとはPython 用のORMライブラリです。MIT Licenceのオープンソースとして提供されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1回答

0評価

0クリップ

350閲覧

投稿2022/01/15 11:10

編集2022/01/16 14:01

Flaskでのアプリケーションの作成は初めてですが、MySQLに接続し、テーブルの作成を行いたく、Flask-SQLAlchemyでモデルを別々のファイルに分割しようと考えております。

実行すると、下記エラーが吐かれてしまいます。

RuntimeError: No application found. Either work inside a view function or push an application context. See http://flask-sqlalchemy.pocoo.org/contexts/.

階層構造

skip/
├ app.py
├ database.py
├ config.py
├ views/
| └ skip_view.py
└ models/
| └ user.py

環境

・CentOS7
・Python3.6
・Flask2.0.2
・Flask-SQLAlchemy2.5.1

発生しているエラーログ

Traceback (most recent call last): File "/var/www/skip/app.py", line 2, in <module> from views import skip_view File "./views/skip_view.py", line 3, in <module> from models.user import User File "./models/user.py", line 1, in <module> from database import db File "./database.py", line 1, in <module> from flask_sqlalchemy import SQLAlchemy ModuleNotFoundError: No module named 'flask_sqlalchemy'

該当するソースコード

app.py

from flask import Flask from views import skip_view from database import db import config def create_app(): app = Flask(__name__) # DB設定を読み込む app.config.from_object('config.Config') db.init_app(app) app.register_blueprint(skip_view.app) return app app = create_app() if __name__ == "__main__": app.run()

database.py

from flask_sqlalchemy import SQLAlchemy # FlaskがSQLAlchemyを使えるように初期化 db = SQLAlchemy() def init_db(app): db.init_app(app)

config.py

class SystemConfig: # DBの接続情報を設定 SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://{user}:{password}@{host}/{db_name}?charset=utf8'.format(**{ 'user': 'xxxx', 'password': 'xxxxxxxx', 'host': '127.0.0.1', 'db_name': 'xxxx' }) Config = SystemConfig

views/skip_view.py

from flask import Blueprint, render_template from models.user import User # Blueprintのオブジェクトを生成する app = Blueprint('views', __name__) @app.route('/login', methods=['GET','POST']) def login(): title = "ログイン" return render_template('login.html', title=title)

models/user.py

from database import db class User(db.Model): __tablename__ = 'users' id = db.Column(db.Integer, primary_key=True) nickname = db.Column(db.String(30), unique=True, nullable=True) email = db.Column(db.String(300), unique=True, nullable=True) password = db.Column(db.Text, nullable=True) first_name = db.Column(db.String(30), nullable=True) last_name = db.Column(db.String(30), nullable=True) db.create_all()

同様のエラーが無いか探してみたところ、テーブルを作成する際に、アプリケーションコンテキストをプッシュするために、「with app.app_context()」を使用するという記事を見たのですが、上手くいかずという状況です。
エラー文からflask_sqlalchemyが読み込まれていないことが原因だと思うのですが、参考にしているサイトでは、上記のコードで記載されていたので、何が原因なのかが分かりませんでした。

何か原因が分かる方がいらっしゃいましたら、ご教授頂けますと幸いです。
その他に必要な情報がありましたら提示いたします。
よろしくお願いいたします。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

SQLAlchemy

SQLAlchemyとはPython 用のORMライブラリです。MIT Licenceのオープンソースとして提供されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。