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

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

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

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

Python 3.x

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

SQLAlchemy

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

Python

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

Q&A

1回答

897閲覧

【Flask】MySQLへ接続しTableを作成後、flask runするとInternalServerErrorが出てしまいます。

退会済みユーザー

退会済みユーザー

総合スコア0

Flask

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

Python 3.x

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

SQLAlchemy

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

Python

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

0グッド

0クリップ

投稿2022/01/17 13:14

解決したいこと

Flaskを使用して管理画面を作成したいと考えております。
FlaskからMySQLに接続し、SQLAlchemyを使用して、テーブルの作成を行いました。
下記サイトを参考に実装しました。

https://qiita.com/shirakiya/items/0114d51e9c189658002e

その後、flask runを実行し、Web上で確認した際にInternalServerErrorが出てしまいます。
下記エラーログになります。

発生している問題・エラー

Traceback (most recent call last): File "/var/www/skip/app.py", line 2, in <module> from skip.database import init_db ModuleNotFoundError: No module named 'skip' unable to load app 0 (mountpoint='') (callable not found or import error)

階層構造

|app/
|└ run.py
|└ skip/
| └ app.py
| └ database.py
| └ config.py
| └ models/
|  └ __ init__.py
|  └ models.py

環境

・CentOS7
・Python:3.6
・Flask:2.0.2
・Flask-SQLAlchemy:2.5.1
・SQLAlchemy:1.4.27
・Flask-Migrate:3.1.0

該当するソースコード

run.py

1from skip.app import app 2 3if __name__ == '__main__': 4 app.run()

skip/app.py

1from flask import Flask, render_template 2from skip.database import init_db 3import skip.models 4 5def create_app(): 6 app = Flask(__name__) 7 8 app.config.from_object('skip.config.Config') 9 init_db(app) 10 11 return app 12 13app = create_app() 14 15@app.route('/') 16def home(): 17 title = "管理画面" 18 return render_template('index.html', title=title)

skip/database.py

1from flask_sqlalchemy import SQLAlchemy 2from flask_migrate import Migrate 3 4# FlaskがSQLAlchemyを使えるように初期化 5db = SQLAlchemy() 6 7def init_db(app): 8 db.init_app(app) 9 Migrate(app, db)

skip/config.py

1import os 2 3class SystemConfig: 4 # Flask 5 DEBUG = True 6 7 # DBの接続情報を設定 8 SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://{user}:{password}@{host}/skip?charset=utf8'.format(**{ 9 'user': os.getenv('DB_USER', 'root'), 10 'password': os.getenv('DB_PASSWORD', 'xxxx_xxxx'), 11 'host': os.getenv('DB_HOST', '127.0.0.1'), 12 }) 13 SQLALCHEMY_TRACK_MODIFICATIONS = False 14 SQLALCHEMY_ECHO = False 15 16Config = SystemConfig

skip/models/models.py

1from skip.database import db 2 3class User(db.Model): 4 __tablename__ = 'users' 5 6 id = db.Column(db.Integer, primary_key=True) 7 nickname = db.Column(db.String(30), unique=True, nullable=True) 8 email = db.Column(db.String(300), unique=True, nullable=True) 9 password = db.Column(db.Text, nullable=True) 10 first_name = db.Column(db.String(30), nullable=True) 11 last_name = db.Column(db.String(30), nullable=True)

skip/models/__init__.py

1from .models import User 2 3__all__ = [ 4 User, 5]

自分で試したこと

エラーログから、app.pyの「from skip.database」という指定が原因なのかと思い、
「from database」という指定に変更したところ、下記エラーログに変わりました。

Traceback (most recent call last): File "/var/www/skip/app.py", line 2, in <module> from database import init_db File "./database.py", line 1, in <module> from flask_sqlalchemy import SQLAlchemy ModuleNotFoundError: No module named 'flask_sqlalchemy' unable to load app 0 (mountpoint='') (callable not found or import error)

ただ、flask_sqlalchemyはpipにてインストール出来ており、何が原因なのか分からない状況です。
ModuleNotFoundErrorについて、調べて試行錯誤してみたのですが、エラー解決には繋がらず、何か原因がわかる方がいらっしゃいましたら、ご教授頂けますと幸いです。

その他に必要な情報がありましたら提示いたします。
よろしくお願いいたします。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

  • flask_sqlalchemyはpipにてインストール出来ており、何が原因なのか分からない状況です。

今動いているPythonではなく別のPythonにインストールされているかもしれません。

run.pyの最初に以下のコードを追加してください。

python

1import sys 2print(sys.executable)

これで表示されるpythonのフルパスが仮に'/aaa/bbb/ccc/python'だとした場合、ターミナルで

terminal

1/aaa/bbb/ccc/python -m pip install Flask-SQLAlchemy

を実行してインストールしてみてください。

投稿2022/01/17 14:42

ppaul

総合スコア24666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2022/01/19 13:56 編集

ご回答頂きありがとうございます。 また、確認が遅くなり、すみません。 頂いた内容を実行してみたところ、「Requirement already satisfied」すでにインストール済み?とのことです。 念の為ですが、Pythonのフルパスは/user/bin/python3となります。 エラーについても変わらず、「ModuleNotFoundError: No module named 'flask_sqlalchemy'」となっておりました。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問