У меня проблемы с пониманием преимуществ использования декларативных классов в SQLAlchemy.
Как я понимаю, ORM - это способ применения концепции таблиц базы данных к системе классов OOP. Однако я не понимаю, почему класс таблицы уже не удовлетворяет этому требованию.
Итак, чтобы сформулировать мой вопрос на примере:
В чем преимущество использования этого:
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
from sqlalchemy import Column, Integer, String
class User(Base):
__tablename__ = 'users'
id = Column(Integer, primary_key=True)
name = Column(String(16))
fullname = Column(String(60))
nickname = Column(String(50))
Вместо этого:
from sqlalchemy import *
metadata = MetaData()
user = Table('users', metadata,
Column('id', Integer, primary_key=True),
Column('name', String(16)),
Column('fullname ', String(60)),
Column('nickname ', String(50))
)
Последний уже является представлением класса, не так ли? Почему мы строим другой класс поверх уже существующего класса таблиц? В чем выгода?