"""
В случае когда мы использовали flask_sqlalchemy
 - Flask-SQLAlchemy самостоятельно пошел за ключами в конфиг.ру,
т.е. ничего дополнительного, кроме параметров в конфиге, делать не надо,
а также в переменную db мы объявили как модуль SQLAlchemy,
который содержит необходимые методы для работы базой,
а также содержит Класс общая Модель_базы SQLAlchemy.Model,
от которого мы унаследовали и уточнили нашу модель

В данном же случае, при удаленной работе,
мы создали уже файл (не переменную) db, где

через sqlalchemy.ext.declarative получили общий Класс (общая Модель_базы)
declarative_base, и впихнули ее в пременную Base

через sqlalchemy получили функцию create_engine, которая разобрала
по полочкам upl удаленного сервиса по хранению баз данных на параметры,
в т.ч. указание место хранения
В последствии эти данные мы впихнули в нашу Модель, ныне - Base,
как способ обращения к месту хранения

Итого,
при flask_sqlalchemy и sqlite
- способ присоединения и общения к месту хранения- "автоматический"
- модель вшита в SQLAlchemy
- db - это библиотека с методами + есть Класс Модель

без flask_sqlalchemy и postgresql
- способ присоединения и общения к месту хранения
 настраиваем и вносим в переменную Base
- модель вносим в переменную Base
- db - это файл содержащий Base
- методы импортируем из sqlalchemy.orm
"""
import Data_base_learn1.config

# Импортируем create_engine
#  - разбирает url базы на ключевае параметры
from sqlalchemy import create_engine

# Этот импорт означает, что мы будем работать
# с базами в стандартном режиме,
# т.е. Алхимия будет за нас автоматическиделать вещи,
# неэффективно использовать память, полияет на быстродействие,
# но просто
from sqlalchemy.ext.declarative import declarative_base
# Модули для установки сессии
from sqlalchemy.orm import scoped_session, sessionmaker

engine = create_engine(Data_base_learn1.config.KEY_REMOTE_BASE)
# Look url and details in file Data_base_learn1.config

db_session = scoped_session(sessionmaker(bind=engine))
"""
Создаем сессию в переменной db_session
scoped_session - ограниченная сессия
sessionmaker - создатель сессий
bind - связывать
Т.е. в ограниченной сессии создать сессию по связанному параметру engine,
где у нас храниться url удаленной базы данных.
"""

Base = declarative_base()
"""Наша база Base будет будет объектом класса декларативной базы
 и обладать соответсвющими свойствами и управлением
 Т.е. в ней уже есть необходимые данные, осталось только наследовть
 Т.е. это теперь наш конструктор для таблица и прочих данных"""

Base.query = db_session.query_property()
"""
query - запрос
Base.query
Параметр Запрос, нашей базы, будет иметь атрибуты/параметры
сессии, в которую мы уже ввели данные по цепи из url
 """
