前提・実現したいこと
財務諸表の分析を自動化するサイトを作っています。
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
1.html 2<!DOCTYPE html> 3<html lang="ja"> 4 <head> 5 <meta charset="UTF-8"> 6 <title>singup</title> 7 <link rel="stylesheet" type="text/css" href="stylesheets/design.css"> 8 <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.0.0-beta1/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-giJF6kkoqNQ00vy+HMDP7azOuL0xtbfIcaT9wjKHr8RbDVddVHyTfAAsrekwKmP1" crossorigin="anonymous"> 9 </head> 10<body> 11 <h1>ユーザー登録</h1> 12 <a href="/login">ログイン画面に戻る</a> 13 <form method="POST"> 14 <label for="">ユーザー名</label> 15 <input type="text" name="user_name" placeholder="user name"> 16 <label for="">パスワード</label> 17 <input type="password" name="password" placeholder="password"> 18 <input type="submit" value="新規登録"> 19 </form> 20</body> 21</html>
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') 59
search
1.db 2id INTEGER NOT NULL, 3 username VARCHAR(20) NOT NULL, 4 PRIMARY KEY (id), 5 UNIQUE (username)
###試したこと
https://qiita.com/414_cherry/items/b34f6c6db087e2e35a51
を参考にして誤字があるかチェックしましたが、ダメでした。
模写した動画:https://www.youtube.com/watch?v=VtJ-fGm4gNg
補足情報(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ダウンロード済み
回答1件
あなたの回答
tips
プレビュー