首页 > 解决方案 > 在 SQLAlchemy 中使用声明性基类而不是表对象的区别和好处

问题描述

我无法理解在 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))
)

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

标签: pythonclasssqlalchemydeclarative

解决方案


推荐阅读