Flaskアプリ用にPostgreSQLを用意
FlaskベースのWebアプリ用のデータベースとしてPostgreSQLを用意した時のメモ。
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