週末副業記

土日は副業エンジニアのブログです。副業に関することを投稿します。

(sqlite3.OperationalError) no such table: ** ,テーブルを追加する方法【Python×Flask】


f:id:aisakakun:20180808233644p:plain

一度テーブルを作成し、実行し、利用。

その後、別のテーブルを作成し、実行すると、

f:id:aisakakun:20180808231848p:plain

no such table: dbtests

「dbtests」というテーブルが見つからない場合の対処法。

from flaskr import db

class Entry(db.Model):
    __tablename__ = 'entries'
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.Text)
    text = db.Column(db.Text)

    def __repr__(self):
        return '<Entry id={id} title={title!r}>'.format(
                id=self.id, title=self.title)
#追加部分
class DbTest(db.Model):
	__tablename__ = 'dbtests'
	id = db.Column(db.Integer, primary_key=True)
	title = db.Column(db.Text)
	text = db.Column(db.Text)

	def __repr__(self):
		return '<DbTest id={id} text={text!r}>'.format(
				id=self.id, text=self.text)
#追加部分
def init():
    db.create_all()

追加して他の連携部分もきちんと書けている。

コマンドラインにて以下の操作をすることにより解決できます。

"""「flaskr」があるディレクトリに移動し、"""
>python3
>from flaskr.models import Entry, DbTest,db
>db.create_all()
>exit()

#そして再び
>python3 manage.py runserver

するとテーブルが作成されている。

__init__.pyファイルに置けるデータベースの初期化は一度しか機能しないので、必ず初期化しましょう。