Разница и преимущество использования декларативных базовых классов вместо табличных объектов в SQLAlchemy - PullRequest
1 голос
/ 28 января 2020

У меня проблемы с пониманием преимуществ использования декларативных классов в 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))
)

Последний уже является представлением класса, не так ли? Почему мы строим другой класс поверх уже существующего класса таблиц? В чем выгода?

...