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

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

新規登録して質問してみよう
ただいま回答率
87.20%
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による文字列操作をサポートしているため、日本語処理も標準で可能です。

受付中

【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による文字列操作をサポートしているため、日本語処理も標準で可能です。

1回答

0評価

0クリップ

265閲覧

投稿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

from skip.app import app if __name__ == '__main__': app.run()

skip/app.py

from flask import Flask, render_template from skip.database import init_db import skip.models def create_app(): app = Flask(__name__) app.config.from_object('skip.config.Config') init_db(app) return app app = create_app() @app.route('/') def home(): title = "管理画面" return render_template('index.html', title=title)

skip/database.py

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

skip/config.py

import os class SystemConfig: # Flask DEBUG = True # DBの接続情報を設定 SQLALCHEMY_DATABASE_URI = 'mysql+pymysql://{user}:{password}@{host}/skip?charset=utf8'.format(**{ 'user': os.getenv('DB_USER', 'root'), 'password': os.getenv('DB_PASSWORD', 'xxxx_xxxx'), 'host': os.getenv('DB_HOST', '127.0.0.1'), }) SQLALCHEMY_TRACK_MODIFICATIONS = False SQLALCHEMY_ECHO = False Config = SystemConfig

skip/models/models.py

from skip.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)

skip/models/__init__.py

from .models import User __all__ = [ User, ]

自分で試したこと

エラーログから、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について、調べて試行錯誤してみたのですが、エラー解決には繋がらず、何か原因がわかる方がいらっしゃいましたら、ご教授頂けますと幸いです。

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

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

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による文字列操作をサポートしているため、日本語処理も標準で可能です。