SQLAlchemy в связке с Flask

Admin Flask, SQLAlchemy

Базовые сведения о работе SQLAlchemy в Flask.

Подготовка

В системе должен быть установлен python:
как установить python на Mac OS
как установить python на Ubuntu

Также должна быть создана виртуальная среда для работы команды pip. Если её еще нет:

python3 -m venv venv

Заходим внутрь виртуальной среды python:

source venv/bin/activate

Обновим pip:

pip install --upgrade pip

Установка

pip install Flask-SQLAlchemy
pip install Flask-Migrate
pip install psycopg2-binary

Основной синтаксис в файле __init__.py:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate

def create_app():
    app = Flask(__name__)

    # Должен находится выше db = SQLAlchemy(app)
    app.config.from_object('config.DevelopmentConfig')

    return app

app = create_app()
db = SQLAlchemy(app)
migrate = Migrate(app, db)

Также должен быть создан файл конфигурации, в котором будут указаны данные для соединения с базой данных в различных средах:

import os

class BaseConfig(object):
    DEBUG = False

    SECRET_KEY = os.environ.get('SECRET_KEY') or 'A SECRET KEY'
    SQLALCHEMY_TRACK_MODIFICATIONS = False


class DevelopmentConfig(BaseConfig):
    DEBUG = True
    SQLALCHEMY_DATABASE_URI = os.environ.get('DEV_DATABASE_URI') or \
                              'postgresql://localhost/db_name'

class ProductionConfig(BaseConfig):
    DEBUG = False
    SQLALCHEMY_DATABASE_URI = os.environ.get('PROD_DATABASE_URI') or \
                              'postgresql://root:pass@localhost/db_name'

Вметсо postgresql может быть например mysql+pymysql.

Миграция

Под миграцией подразумевается синхронизация классов модели с базой данных.

При первой инициализации и создании таблиц в БД:

flask db init
flask db migrate -m "Initial migration."
flask db upgrade

Справка:

flask db --help

Если вам пригодилась информация, вы можете поблагодарить автора сайта символическим пожертвованием:

Добавить комментарий

Напишите свой комментарий, если вам есть что добавить/поправить/спросить по теме текущей статьи:
"SQLAlchemy в связке с Flask"