CData Python Connector for Presto

Build 22.0.8479

メタデータの反映

SQLAlchemy はORM として動作することも可能で、データベーステーブルのレコードをインスタンス化可能なレコードとして扱うことができます。この機能を使用するには、次の方法の1つを使って参照先のメタデータを反映する必要があります。

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

ORM でモデル化するテーブルのマッピングクラスを宣言します。これは"sqlalchemy.ext.declarative.declarative_base" を使って行います。データモデル内の既知のテーブルは、以下の例のように、部分的または完全にモデル化されます。

from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class [Hive].[Default].Customers(Base):
	__tablename__ = "[Hive].[Default].Customers"
	Id = Column(String, primary_key=True)
	Id = Column(String)
	Name = Column(String)

自動でのメタデータの反映

手動でテーブルをマッピングする他に、SQLAlchemy は1つ以上のテーブルのメタデータを自動で見つけることができます。automap_base によって、データモデル全体でメタデータの発見を実現します。

from sqlalchemy import MetaData
from sqlalchemy.ext.automap import automap_base
meta = Metadata()
base = automap_base(metadata=meta)
base.prepare()
[Hive].[Default].Customers = base.classes.[Hive].[Default].Customers

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

from sqlalchemy import MetaData, Table
from sqlalchemy.engine.reflection import inspector
meta = Metadata()
insp = Inspector.from_engine(engine)
[Hive].[Default].Customers_table = Table("[Hive].[Default].Customers", meta)
insp.reflecttable([Hive].[Default].Customers_table, ["Id","Id","Name"])

Copyright (c) 2023 CData Software, Inc. - All rights reserved.
Build 22.0.8479