在Sqlalchemy中,什么';使用Base和table定义表是不同的
我知道我可以使用以下表格定义表格:在Sqlalchemy中,什么';使用Base和table定义表是不同的,sqlalchemy,Sqlalchemy,我知道我可以使用以下表格定义表格: user = Table('user', metadata, Column('user_id', Integer, primary_key = True), ) 和使用基地: Base = declarative_base() class User(Base): __tablename__ = 'user' user_id= Column(Integer, primary_key = True) 但是有什么不
user = Table('user', metadata,
Column('user_id', Integer, primary_key = True),
)
和使用基地:
Base = declarative_base()
class User(Base):
__tablename__ = 'user'
user_id= Column(Integer, primary_key = True)
但是有什么不同呢
Base = declarative_base()
class User(Base):
__tablename__ = 'user'
id = Column('id', Integer, primary_key=True)
name = Column('name', Unicode(64))
只是语法上的糖
metadata = MetaData()
user = Table('user', metadata,
Column('id', Integer, primary_key=True),
Column('name', Unicode(64)),
)
class User(object):
pass
mapper(User, user) # this will modify the User class!
在第一个示例中,您只定义了一个表,在第二个示例中,定义了一个表和一个映射到此表的类。这是一种声明式映射样式,它比经典映射更简洁,因为经典映射必须分别定义表和映射。我建议阅读SQLAlchemy文档,至少是ORM和核心教程,以便更好地掌握SA基础知识。@AudriusKažukauskas如果您添加一些链接,我会将其作为一个答案,因为它回答了问题,没有更多的内容要说。声明式样式只是
Table
和Mapper
的组合,使用户更容易阅读(而且更清晰)。其他所有内容都应该从文档中读取。只是为了所有遇到这个的人