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

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

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

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

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

SQLAlchemy

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

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

Q&A

解決済

1回答

1022閲覧

sqlite3.OperationalError:table user has no column named user_name pythonエラー

jaogjig

総合スコア21

Flask

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

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

SQLAlchemy

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

ログイン

ログインは、ユーザーがコンピューターシステムにアクセスするプロセスの事を呼びます。

0グッド

0クリップ

投稿2021/12/28 10:12

編集2021/12/28 12:05

前提・実現したいこと

財務諸表の分析を自動化するサイトを作っています。
signup機能を作り終わりました。そこで、ユーザー名とパスワードの両方を”123”入れて新規登録ボタンを押したところ以下のエラーが発生しました。

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

エラーメッセージ

qlalchemy.exc.OperationalError: (sqlite3.OperationalError) table user has no column named user_name
[SQL: INSERT INTO user (user_name, password) VALUES (?, ?)]
[parameters: ('123', 'sHa256$LQTjrzGilIa4Y5ax$dd7fb55989f4e6beaeb151b7599b24c06694dd10c83fd1fd61172ce6a4fbba30')]
(Background on this error at: https://sqlalche.me/e/14/e3q8)
となっています。

該当コード

signup

app

1.py 2 from re import L 3import os 4from flask import Flask,render_template,request,redirect 5import pandas as pd 6from flask_sqlalchemy import SQLAlchemy 7from flask_login import UserMixin, LoginManager,login_user,logout_user,login_required 8from werkzeug.security import generate_password_hash ,check_password_hash 9app = Flask(__name__) 10app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///search.db' 11app.config['SECRET_KEY']= os.urandom(24) 12db = SQLAlchemy(app) 13Login_manager=LoginManager() 14Login_manager.init_app(app) 15 16 17class User(UserMixin,db.Model): 18 id = db.Column(db.Integer, primary_key=True) 19 user_name = db.Column(db.String(20), unique=True, nullable=False) 20 password = db.Column(db.String(20), unique=True, nullable=False) 21def __init__(self,user_name=None, password=None): 22 self.user_name =user_name 23 self.password=password 24 25@Login_manager.user_loader 26def load_user(user_id): 27 return User.query.get(int(user_id)) 28 29 30 31@app.route("/signup",methods=["GET","POST"]) 32def signup(): 33 if request.method == 'POST': 34 user_name= request.form.get('user_name') 35 password= request.form.get('password') 36 user= User(user_name=user_name, password=generate_password_hash(password, method='sHa256')) 37 db.session.add(user) 38 db.session.commit() 39 return redirect('/') 40 else: 41 return render_template("signup.html") 42 43@app.route("/login",methods=["GET","POSt"]) 44def login(): 45 if request.method == 'POST': 46 user_name= request.form.get('user_name') 47 password= request.form.get('password') 48 user=User.query.filter_by(user_name=user_name).first() 49 if check_password_hash(user.password,password): 50 login_user(user) #間違っていた時の処理は課題 51 return redirect('/') 52 else: 53 return render_template("login.html") 54@app.route('/logout') 55@login_required #ログインしてないとアクセスできません文 56def logout(): 57 logout_user() 58 return redirect('/login')

###試したこと
https://qiita.com/414_cherry/items/b34f6c6db087e2e35a51
を参考にして誤字があるかチェックしましたが、ダメでした。

補足情報(FW/ツールのバージョンなど)

ファイルとディレクトリの配置
pycache
|-app.cpython-39.pyc
images
|-2.png
static
|-design.css
templates
|-howto.html
|-index.html
|-searched.html
|-table.html
|-signup.html
|-login.html

app.py
search.db
クレスコ財務データ(自動保存済み).csv

FW:flask
言語:Python3.9.7
pandasダウンロード済み

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

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

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

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

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

guest

回答1

0

ベストアンサー

DB(search.db)ファイルが無いか、search.dbファイル中のuserテーブルが無いか、userテーブルのuser_nameが無いかのいずれかだと思います。

search.dbがある場合は削除して作り直す、無い場合は作成してみてください。

投稿2021/12/30 14:19

FiroProchainezo

総合スコア2401

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

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

jaogjig

2022/01/01 16:17

回答ありがとうございます。見直したらできました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問