FlaskベースのWebアプリ用のデータベースとしてPostgreSQLを用意した時のメモ。
以下サイトを参考に実施。
管理者ユーザーでログイン
C:\PostgreSQL\15\bin\psql.exe -U postgres
# Passwordを入力
ロールを作成
CREATE ROLE flaskuser WITH LOGIN PASSWORD 'password';
データベースを作成
WITH OWNER flaskuser
をつけないと、flask db migrate
で「psycopg2.errors.InsufficientPrivilege: スキーマ public へのアクセスが拒否されました」エラーになりました。
CREATE DATABASE flasktutorial WITH OWNER flaskuser;
# \lでデータベース一覧を確認する
アクセスできることを確認
# ctrl+cで管理者ユーザーからログアウトしておく
C:\PostgreSQL\15\bin\psql.exe -U flaskuser -d flasktutorial
# Passwordを入力
FlaskアプリにてDB接続を実装
SQLALCHEMY_DATABASE_URI
に、接続情報を記載
# from pathlib import Path
from flask import Flask
from flask_migrate import Migrate
from flask_sqlalchemy import SQLAlchemy
from flask_wtf.csrf import CSRFProtect
db = SQLAlchemy()
csrf = CSRFProtect()
def create_app():
app = Flask(__name__)
app.config.from_mapping(
SECRET_KEY="flaskapp123456789",
SQLALCHEMY_DATABASE_URI="postgresql+psycopg2://{user}:{password}@{host}/{name}".format(
user="flaskuser",
password="password",
host="127.0.0.1",
name="flasktutorial",
),
SQLALCHEMY_TRACK_MODIFICATIONS=False,
SQLALCHEMY_ECHO=True,
WTF_CSRF_SECRET_KEY="flaskapp123456789",
)
csrf.init_app(app)
db.init_app(app)
Migrate(app, db)
from apps.crud import views as crud_views
app.register_blueprint(crud_views.crud, url_prefix="/crud")
return ap
DB周りのflaskコマンドを実行
flask db init
flask db migrate
flask db upgrade