メタデータの反映
SQLAlchemy はオブジェクト関係マッピング(ORM)として動作させることができます。これにより、データベーステーブルのレコードをインスタンス化可能なレコードとして扱うことができます。 この機能を使用するには、次の方法の1つを使って参照先のメタデータを反映する必要があります。
Note: 以下の例ではSQLAlchemy 1.4 を使用しています。
マッピングクラスを使用したデータのモデル化
"sqlalchemy.ext.declarative.declarative_base" を使用して、ORM でモデル化するテーブルのマッピングクラスを宣言します。 データモデル内の既知のテーブルは、以下の例に示すように、部分的または完全にモデル化されます。from sqlalchemy.ext.declarative import declarative_base Base = declarative_base() class "Sample"."DB2INST1".Books(Base): __tablename__ = "\"Sample\".\"DB2INST1\".Books" Id = Column(String, primary_key=True) Id = Column(String) Author = Column(String)
自動でのメタデータの反映
手動でテーブルをマッピングする他に、SQLAlchemy は1つ以上のテーブルのメタデータを自動で見つけることができます。 データモデル全体でこれを行うには、automap_base を使用します。from sqlalchemy import MetaData from sqlalchemy.ext.automap import automap_base meta = MetaData() abase = automap_base(metadata=meta) abase.prepare(autoload_with=engine) "Sample"."DB2INST1".Books = abase.classes."Sample"."DB2INST1".Books
また、1つのテーブルの情報であればインスペクターを使用して反映することもできます。この方法で反映させる場合には、マップする特定のカラムのリストはオプションです。
from sqlalchemy import MetaData, Table from sqlalchemy import inspect meta = MetaData() insp = inspect(engine) "Sample"."DB2INST1".Books_table = Table("\"Sample\".\"DB2INST1\".Books", meta) insp.reflect_table("Sample"."DB2INST1".Books_table, ["Id","Author"])