Я работаю над интерфейсом Python для базы данных SQL, содержащей данные об электронных деталях. Существует базовый класс, представляющий справочную таблицу номеров основных деталей, от которой наследуются все классы типов деталей. Каждый подкласс имеет свою собственную таблицу для хранения параметрических данных. Есть также несколько других классов, содержащих такую информацию, как данные о поставщиках, один или несколько экземпляров которых есть у каждого экземпляра 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?