flask_sqlalchemyでデータベースを作る方法

はじめに

flask_sqlalchemyを使ってsqliteデータベースを作成する方法をまとめる

階層構造

MODELS2
  └─model.py

流れ

  1. SQLAlchemyの設定
    1. Flaskオブジェクトの定義
    2. データベースの名称、場所の指定
    3. その他SQLAlchemyの設定
  2. SQLAlchemyオブジェクトを作成
  3. モデルクラスを作成
    1. テーブル名の定義
    2. カラムの定義
  4. テーブルの作成
    1. create_all()関数でデータベースに新しいテーブルを作成する

コード

import os
from flask import Flask
from flask_sqlalchemy import SQLAlchemy

# SQLAlchemyの設定
base_dir = os.path.dirname(__file__)
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///' + os.path.join(base_dir, 'DataBase1.sqlite')

# SQLAlchemyオブジェクトを作成
db = SQLAlchemy(app)

# モデルクラスを作成
class Person(db.Model):
    __tablename__ = 'persons'

    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(20))
    phone_number = db.Column(db.String(13))
    age = db.Column(db.Integer)
    create_at = db.Column(db.DateTime)
    update_at = db.Column(db.DateTime)

    def __init__(self, name, phone_number, age, create_at, update_at):
        self.name = name
        self.phone_number = phone_number
        self.age = age
        self.create_at = create_at
        self.update_at = update_at

# テーブルの作成 
db.create_all()

実行結果

実行するとmodel.pyと同じ階層に「DataBase1.sqlite」が作成される。

test
  ├─model.py
  └─Database1.sqlite

既に同名のテーブルがある場合、db.create_all()しても新しくテーブルは作成されない。