如何使用元类创建类似SQLAlchemylike的声明性基本行为?

2024-04-19 04:53:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图模仿SQLAlchemy的声明性基本行为。我想做的是定义一组从基类继承的模型,然后执行类似Base.meta.create_all的操作来初始化一些表、索引等

我所做的是让我的自定义Base类使用metadata参数,使用BaseMeta类创建一些映射,如下this示例所示

问题是SQLAlchemy在基类中有这个元数据类,基类包含像create_alldrop_all这样的方法,并以某种方式读取从Base继承的所有模型。我在Base.__subclasses__()上玩了一点,它可以正常工作,但它与这个MetaData类无关,这个类包含所有的Table引用

请注意,我不是在问如何使用SQLAlchemy,我只是想创建一个定制的SQLAlchemy,就像克隆一样,只是为了学习