CData Python Connector for SQL Server

Build 24.0.9062

メタデータの反映

SQLAlchemy はオブジェクト関係マッピング(ORM)として動作させることができます。これにより、データベーステーブルのレコードをインスタンス化可能なレコードとして扱うことができます。 この機能を使用するには、次の方法の1つを使って参照先のメタデータを反映する必要があります。

Note: 以下の例ではSQLAlchemy 1.4 を使用しています。

マッピングクラスを使用したデータのモデル化

"sqlalchemy.ext.declarative.declarative_base" を使用して、ORM でモデル化するテーブルのマッピングクラスを宣言します。 データモデル内の既知のテーブルは、以下の例に示すように、部分的または完全にモデル化されます。
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class "SampleDB"."Sample".Products(Base):
	__tablename__ = "\"SampleDB\".\"Sample\".Products"
	Id = Column(String, primary_key=True)
	Id = Column(String)
	ProductName = 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)
"SampleDB"."Sample".Products = abase.classes."SampleDB"."Sample".Products

また、1つのテーブルの情報であればインスペクターを使用して反映することもできます。この方法で反映させる場合には、マップする特定のカラムのリストはオプションです。

from sqlalchemy import MetaData, Table
from sqlalchemy import inspect
meta = MetaData()
insp = inspect(engine)
"SampleDB"."Sample".Products_table = Table("\"SampleDB\".\"Sample\".Products", meta)
insp.reflect_table("SampleDB"."Sample".Products_table, ["Id","ProductName"])

Copyright (c) 2024 CData Software, Inc. - All rights reserved.
Build 24.0.9062