Python 在SQLAlchemy中使用声明性基类而不是表对象的区别和好处

Python 在SQLAlchemy中使用声明性基类而不是表对象的区别和好处,python,class,sqlalchemy,declarative,Python,Class,Sqlalchemy,Declarative,我在理解SQLAlchemy中使用声明性类的好处时遇到了问题 据我所知,ORM是一种将数据库表的概念应用于OOP类系统的方法。然而,我不明白为什么table类不能满足这个要求 通过一个例子来形成我的问题: 使用此选项的好处是什么: from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() from sqlalchemy import Column, Integer, String clas

我在理解SQLAlchemy中使用声明性类的好处时遇到了问题

据我所知,ORM是一种将数据库表的概念应用于OOP类系统的方法。然而,我不明白为什么table类不能满足这个要求

通过一个例子来形成我的问题:

使用此选项的好处是什么:

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))
)

后者已经是类表示了,不是吗?为什么我们要在已经存在的表类之上构建另一个类?有什么好处?

“后一个已经是类表示了,不是吗?”-不,
对象是SQL表的表示,用于形成查询等。啊,好的-所以用户是一个对象,而用户是一个类。我为类用户创建的任何对象都将是对象用户中的一个条目。因此,好处是在第一种情况下,表中的行通过对象表示。“后一种已经是类表示了,不是吗?”-不,
对象是SQL表的表示,用于形成查询等。啊,好的-所以用户是对象,而用户是类。我为类用户创建的任何对象都将是对象用户中的一个条目。因此,在第一种情况下,表中的行是通过对象表示的。