前提・実現したいこと
flaskを使ってブログ投稿機能を作り、ブログ一覧機能を作りたいです。
『ゼロからわかるflaskの教科書』の「CRUDにおけるread」の「show_entriesビューで全ての記事をデータベースから取得」を学習していた際に以下のようなエラーが派生しました。エラー原因がentriesのテーブルが作成されていないとされているのですが、flask_blog/models/entriesでテーブルを作成しております。そのためどこを改善するべきなのかよくわかりません。
###発生している問題・エラーメッセージ
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: entries [SQL: SELECT entries.id AS entries_id, entries.title AS entries_title, entries.text AS entries_text, entries.created_at AS entries_created_at FROM entries ORDER BY entries.id DESC] (Background on this error at: http://sqlalche.me/e/13/e3q8)
###flask_blog/models/entries.pyのソースコード
python
1from flask_blog import db 2from datetime import datetime 3 4class Entry(db.Model): 5 __tablename__='entries' 6 id = db.Column(db.Integer,primary_key=True) 7 title = db.Column(db.String(50),unique=True) 8 text = db.Column(db.Text) 9 created_at = db.Column(db.DateTime) 10 11 def __init__(self,title=None,text=None): 12 self.title = title 13 self.text= text 14 self.created_at= datetime.utcnow() 15 16 def __repr__(self): 17 return'<Entryid:{} title:{} text:{}>'.format(self.id, self.title, self.text)
###flask_blog/views/entries.pyのソースコード
python
1from flask import request,redirect,url_for,render_template,flash,session 2from flask_blog import app 3from flask_blog import db 4from flask_blog.models.entries import Entry 5 6@app.route('/') 7def show_entries(): 8 if not session.get('logged_in'): 9 return redirect(url_for('login')) 10 entries=Entry.query.order_by(Entry.id.desc()).all() 11 return render_template('entries/index.html',entries=entries) 12 13@app.route('/entries',methods=['POST']) 14def add_entry(): 15 if not session.get('logged_in'): 16 return redirect(url_for('login')) 17 entry=Entry(title=request.form['title'],text=request.form['text']) 18 db.session.add(entry) 19 db.session.commit() 20 flash('新しく記事が作成されました') 21 return redirect(url_for('show_entries')) 22 23@app.route('/entries/new',methods=['GET']) 24def new_entry(): 25 if not session.get('logged_in'): 26 return redirect(url_for('login')) 27 return render_template('entries/new.html')
試したこと
⑴models/entriesのソースコードが間違っていないかの確認
結果特になし
⑵entries=Entry.query.order_by(Entry.id.desc()).all()の削除
ブラウザが表示ざれなくなる
補足情報(FW/ツールのバージョンなど)
ちなみにSQLAlchemyのブラウザ上で以下のコードがハイライトされていたのですがエラーと何か関係があるのでしょうか。
entries=Entry.query.order_by(Entry.id.desc()).all()
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/08 12:54