我正在研究包含电子零件数据的 SQL 数据库的 python 接口。有一个表示主零件编号参考表的基类,所有零件类型类都从该参考表继承。每个子类都有自己的表来保存参数数据。还有其他几个包含诸如供应商数据之类的信息的类,其中每个 Part 实例都有一个或多个实例。继承层次结构如下所示:
Part
PartTypeA
PartTypeB
Part 类与描述供应商信息等的其他表有几个关系。
我有一个单独的 DatabaseManager 类来处理向数据库添加部件(管理和控制 SQLAlchemy 引擎的实例)。即使表是在其他类中定义的,如何使用 SQLAlchemy 为所有表发出 CREATE 语句?
我尝试了以下方法(这是在数据库管理器类中):
self.db_engine = create_engine(db_uri, echo=False)
Part.metadata.create_all(self.db_engine)
这实际上有效,但我不确定为什么(可能是因为 Part 包含与某些表的 SQLAlchemy 关系,而其他表都是 Part 的子类?)。SQLAlchemy 文档中的示例似乎假设引擎被定义在与数据库表相同的位置。
有谁知道这是否是正确的方法?如果不是,让 SQLAlchemy 发出 CREATE 语句的正确方法是什么?