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

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

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

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

SQLAlchemy

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

Python

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

受付中

「sqlalchemy.exc.ProgrammingError」が出る

mmtt
mmtt

総合スコア22

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

SQLAlchemy

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

Python

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

1回答

0評価

0クリップ

767閲覧

投稿2022/01/30 09:11

前提・実現したいこと

Flaskで作成しているwebアプリにログイン機能を実装したい。
DBはpostgreSQL、フレームワークはFlaskを用いています。

発生している問題・エラーメッセージ

/signupにアクセスは出来るものの、usernameとpasswordを入力し、「送信」を押すと下記のエラーが出てしまいます。原因と解決方法を教えていただければ嬉しいです。よろしくお願いいたします。

sqlalchemy.exc.ProgrammingError: (psycopg2.errors.UndefinedTable) relation "user" does not exist LINE 1: INSERT INTO "user" (username, password) VALUES ('t', 'sha256... ^ [SQL: INSERT INTO "user" (username, password) VALUES (%(username)s, %(password)s) RETURNING "user".id] [parameters: {'username': 't', 'password': 'sha256$256g8V7vekMAAADC$bd440dd7dfecfcb7e1cbc3283238f3e1d41a0cd8d1d4d5fc43a9638e624f1066'}] (Background on this error at: https://sqlalche.me/e/14/f405)

該当のソースコード

python

from flask import Flask, render_template, request, redirect, session from flask_sqlalchemy import SQLAlchemy from flask_login import UserMixin, LoginManager, login_user, logout_user, login_required from werkzeug.security import generate_password_hash, check_password_hash import psycopg2 import reload import random app = Flask(__name__) app.config['SECRET_KEY'] = 'xxxxxx' app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql:///shikaq.db' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app) login_manager = LoginManager() login_manager.init_app(app) @login_manager.user_loader def load_user(user_id): return User.query.get(int(user_id)) class User(UserMixin, db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(50), nullable=False, unique=True) password = db.Column(db.String(25)) @app.route('/signup', methods=['GET', 'POST']) def signup(): if request.method == "POST": username = request.form.get('username') password = request.form.get('password') # Userのインスタンスを作成 user = User(username=username, password=generate_password_hash(password, method='sha256')) db.session.add(user) db.session.commit() return redirect('/login') else: return render_template('signup.html') @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == "POST": username = request.form.get('username') password = request.form.get('password') # Userテーブルからusernameに一致するユーザを取得 user = User.query.filter_by(username=username).first() if check_password_hash(user.password, password): login_user(user) return redirect('/') else: return render_template('login.html') @app.route('/logout') @login_required def logout(): logout_user() return redirect('/login')

試したこと

https://docs.sqlalchemy.org/en/14/errors.html#error-f405
エラーメッセージを読み、DBとの接続が上手くいっていないのは理解したのですが、原因、解決方法が分からず質問させていただいています。

良い質問の評価を上げる

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

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

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

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

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

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

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

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

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

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

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

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

ただいまの回答率
87.20%

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

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

質問する

関連した質問

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

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

SQLAlchemy

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

Python

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