私は、電子部品データを含む SQL データベースへの Python インターフェイスに取り組んでいます。すべてのパーツ タイプ クラスが継承するマスター パーツ番号参照テーブルを表す基本クラスがあります。各サブクラスには、パラメトリック データを保持するための独自のテーブルがあります。Part の各インスタンスが 1 つ以上のインスタンスを持つ、ベンダー データなどの情報を含む他のクラスもいくつかあります。継承階層は次のようになります。
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 Relationships が含まれており、他のテーブルはすべて Part のサブクラスであるためでしょうか?)。SQLAlchemy ドキュメントの例は、エンジンがデータベース テーブルと同じ場所で定義されていることを前提としているようです。
これが正しい方法かどうか誰にもわかりませんか?そうでない場合、SQLAlchemy に CREATE ステートメントを発行させる適切な方法は何ですか?