gpt4 book ai didi

sqlalchemy - sqlalchemy:Base如何知道我已经定义了映射到它的类?

转载 作者:行者123 更新时间:2023-12-01 23:13:16 33 4
gpt4 key购买 nike

当我仅对类进行继承时,它才起作用

class User(Base):
__tablename__ = ’users’
id = Column(Integer, primary_key=True)
name = Column(String)
fullname = Column(String)
password = Column(String)

然后我可以使用 Base.metadata.create_all(engine)创建表

我的问题是,sqlalchemy如何知道我已经定义了User(从Base继承)?

最佳答案

每个声明性基类都维护降级类的注册表,该注册表在执行类定义时填充(在metaclass的__init__()方法中)。但是create_all()实际上并未使用此注册表。 MetaData实例(Base.metadata)是SQLAlchemy核心(不是ORM)的一部分,负责维护表的注册表。 MetaData实例通过声明性元类的相同__table__方法创建表(并存储在类的__init__()属性中)时会记住该表。您可以通过Base.metadata.sorted_tables属性获得此表列表。

关于sqlalchemy - sqlalchemy:Base如何知道我已经定义了映射到它的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8988799/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com