Flask & Vue. SQLAlchemy, Migrate, Marshmallow, JWT. Приклад№ 2.7
Міняємо backend
Що будемо використовувати і навіщо?SQLAlchemy
Це програмне забезпечення для роботи з базами даних за допомогою мови SQL. Воно реалізує технологію програмування ORM (Object-Relational Mapping), яка пов'язує бази даних з концепціями об'єктно-орієнтованих мов програмування. SQLAlchemy дозволяє описувати структури даних і способи взаємодії з ними прямо на мові Python. Тобто, Ви не лазитимете більше у базу руками і писати SQL власноруч майже не доведеться. Написали модель - і все. Для того щоб створити або модифікувати таблиці у базі використовуємо Flask-Migrate.Приклад опису моделі:
class Seller(db.Model):
id = db.Column(db.Integer, primary_key = True)
name = db.Column(db.Text)
phone = db.Column(db.Text)
email = db.Column(db.Text)
def __init__(self, data):
for field in data:
setattr(self, field, data.get(field))
# Seller_schema
class SellerSchema(ma.Schema):
class Meta:
fields = ('id', 'name', 'phone', 'email')
# Schema's initializing
seller_schema = SellerSchema()
sellers_schema = SellerSchema(many = True)
Почитати: https://flask-sqlalchemy.palletsprojects.com/en/2.x/quickstart/
Flask-Migrate
Flask-Migrate - це розширення, яке обробляє міграції бази даних SQLAlchemy для програм Flask за допомогою Alembic. Операції з базою даних виконуються через інтерфейс командного рядка Flask. Після того, як ми в додатку Flask створили нову модель або модифікували існуючу, - потрібно внести зміни до бази даних. Цим і займається Flask-Migrate. Робиться це командами з командного рядка. Flask-Migrate створює скрипти, в яких є функціонал для оновлення структури бази даних (upgrade) та для повернення до попереднього стану (downgrade).Приклад ініціалізації:
$ flask db init
$ flask db migrate -m "Initial migration."
$ flask db upgrade
Приклад оновлення бази після корекції моделі:
$ flask db migrate -m "Migration description"
$ flask db upgrade
Почитати: https://flask-migrate.readthedocs.io/en/latest/
Marshmallow
Flask-Marshmallow - це прошарок для Flask, який додає додаткові функції до marshmallow. Він також інтегрується з Flask-SQLAlchemy.Почитати: https://flask-marshmallow.readthedocs.io/en/latest/
JWT
JWT - JSON Web Token — це відкритий стандарт для створення токенів доступу, заснований на форматі JSON. Як правило, використовується для передачі даних для аутентифікації в клієнт-серверних додатках.JWT - сучасна система, працює з двома токенами (access token, refresh token). Після аутентифікації користувача створюються обидва токени.
- access token - використовується для ідентифікації користувача, надсилається з кожним запитом до сервера, має малий термін дії.
- refresh token - використовується для оновлення access token після спливання терміну його дії. Має тривалий строк дії, але може бути використаний лише один раз.
Почитати: https://pythonhosted.org/Flask-JWT/,
https://ru.wikipedia.org/wiki/JSON_Web_Token
Висновки
Що нам дало використання цих інструментів?SQLAlchemy + Flask-Migrate + Marshmallow
Спростили і стандартизували роботу з даними, з базою даних. Якщо треба організувати роботу з іншими типами даних (не з базою даних), наприклад читання з файла, це теж можна зробити, приклад дивіться у menu.py. Для фронтенда доступ до даних буде однаковий, незалежно від того, де саме зберігаються дані.JWT
Система з двома токенами забезпечує більшу стійкість з точки зору безпеки. До того ж токени можуть містити додаткову не критичну до витоку інформацію. Ця інформація зберігається у закодованому вигляді. Зверніть увагу! Інформація НЕ зашифрована, а закодована. Тобто, не слід у токен запихувати паролі! Цю інформацію може використовувати фронтенд. У прикладі ім'я користувача зберігається у токені, і бекенду не має потреби кожного разу витягати ці дані з бази. Фронтенд зчитує його з токена. Підмінити дані у токені не вийде, бо вони підписані цифровим підписом. Якщо цифровий підпис не буде відповідати даним, бекенд буде вважати токен недійсним.
Як запустити приклад?
- Завантажити архів з прикладом, розпакувати
- Запустити приклад командою:
абоpython ./run.py
python3 ./run.py
- У браузері відкрити посилання: http://localhost:5000/
Дивись також:
- Flask & Vue. Приклад# 2.1
- Flask & Vue. Приклад# 2.2 Frontend - Зручна навігація
- Flask & Vue. Приклад# 2.3 Серверна пагінація, пошук, сортування даних
- Flask & Vue. Приклад# 2.4 Проста аутентифікація
- Flask & Vue. Приклад# 2.5 Авторизація
- Flask & Vue. Приклад# 2.6 Кастомні компоненти
- Flask & Vue. Приклад# 2.7 SQLAlchemy, Migrate, Marshmallow, JWT
- Flask & Vue. Використання систем збірки проекту. Webpack
- Flask & Vue. OAuth. Facebook / Google Account
- Flask & Vue. Завантаження файлів
Неочікувано було зустріти матеріал з веб розробки на сайті для палких паяльників! Дякую за метаріал, підписався на ваш блог по RSS.
Додати коментар

Недавні записи
- Конструктор регуляторів моторів. Структура.
- Конструктор регуляторів моторів. Анонс.
- Golang + Vue + PostgreSQL #2
- Golang + Vue + SQLite #1
- FOC Position Control. Векторне управління - Стабілізація положення
- Flask & Vue. Завантаження файлів. Приклад № 2.10
- Рекуперація. FOC і цікаві досліди
- Flask & Vue. OAuth. Приклад№ 2.9
- Flask & Vue. Використання систем збірки проекту. Webpack. Приклад№ 2.8
- Flask & Vue. SQLAlchemy, Migrate, Marshmallow, JWT. Приклад№ 2.7
Tags
stm32 bkp soldering eeprom eb-500 led hih-4000 bme280 bmp280 3d-printer usb ethernet html git docker barometer raspberry-pi remap dc-dc rfid java-script nodemcu mpu-6050 rtc capture gpio avr brushless foc options flash flask atmega python displays rs-232 solar st-link ssd1331 dma adc bluetooth web ssd1306 wifi exti mpu-9250 pwm pmsm mongodb programmator i2c battery max1674 piezo css meteo watchdog books websocket servo dht11 ngnix mpx4115a lcd motor uart sensors nvic encoder usart sms smd bldc esp8266 tim timer gps examples
Архіви
