2016年4月25日月曜日

SQLAlchemy で既存テーブルに INDEX を作成する方法

既に存在しているテーブルに対して INDEX を生成するには、sqlalchemy.Index クラスを用いる。
Index("インデックス名", "カラム名_1", "カラム名_2", ・・・) として、生成されるオブジェクトのメソッド create により INDEX を作成する。

なお、以下の例では sakila データベースの language テーブルに対して、INDEX を生成している。
from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Index

url = <対象データベースへの接続用URL>
engine = create_engine(url, echo=False)
Base = declarative_base(engine)


class TT_LANGUAGE(Base):
    __tablename__ = "language"
    __table_args__ = {"autoload": True}


if __name__ == '__main__':

    i = Index("IX01_LANGUAGE", TT_LANGUAGE.__table__.c.name.desc())
    i.create(engine)

0 件のコメント:

コメントを投稿