Sqlalchemy-core-using-aliases

提供:Dev Guides
移動先:案内検索

SQLAlchemyコア-エイリアスの使用

SQLのエイリアスは、テーブルまたはSELECTステートメントの「名前を変更した」バージョンに対応します。これは、「SELECT * FROM table1 AS a」と言うたびに発生します。 ASはテーブルの新しい名前を作成します。 エイリアスを使用すると、テーブルまたはサブクエリを一意の名前で参照できます。

テーブルの場合、これにより、同じテーブルにFROM句で複数回名前を付けることができます。 ステートメントによって表される列の親名を提供し、この名前に関連してそれらを参照できるようにします。

SQLAlchemyでは、* From Clause.alias()*メソッドを使用して任意のTable、select()コンストラクト、またはその他の選択可能なオブジェクトをエイリアスに変換できます。これにより、Aliasコンストラクトが生成されます。 sqlalchemy.sqlモジュールのalias()関数は、ASキーワードを使用してSQLステートメント内のテーブルまたはサブセレクトに通常適用されるように、エイリアスを表します。

from sqlalchemy.sql import alias
st = students.alias("a")

このエイリアスをselect()構造で使用して、studentsテーブルを参照できるようになりました-

s = select([st]).where(st.c.id>2)

これは、次のようにSQL式に変換されます-

SELECT a.id, a.name, a.lastname FROM students AS a WHERE a.id > 2

接続オブジェクトのexecute()メソッドを使用して、このSQLクエリを実行できるようになりました。 完全なコードは次のとおりです-

from sqlalchemy.sql import alias, select
st = students.alias("a")
s = select([st]).where(st.c.id > 2)
conn.execute(s).fetchall()

上記のコード行が実行されると、次の出力が生成されます-

[(3, 'Komal', 'Bhandari'), (4, 'Abdul', 'Sattar'), (5, 'Priya', 'Rajhans')]