4

複数の子テーブルの主キーを保持する 1 つの親テーブルがあります。子テーブルの数は、実行時に任意に設定できます。SQLalchemy コアを使用して、複数の子テーブルをこの親に結合するにはどうすればよいですか?

有効な FK 制約を持つクラス sqlalchemy.schema.Table のテーブルがあるとします。このクエリを作成するにはどうすればよいですか?

私は試しました。

childJoins= [sa.join(parentTable,childTables[0]),sa.join(parentTable,childTables[1])]
# childTables is a list() of Table objects who are guaranteed linked by pk 

qry = sa.select(["*"],from_obj=childJoins)

どちらが得られますか;

SELECT * 
FROM 
parentTable JOIN child1 ON child1.P_id = parentTable.C1_Id, 
parentTable JOIN child2  ON child2.P__id = parentTable.C2_Id

したがって、parentTable は 2 回リストされます...

join() などを使用してさらに多くのバリエーションを試しました。ドキュメントを見ましたが、まだ欲しいものを得ることができません。

SELECT *
FROM parentTable
JOIN child1 ON parentTable.C1_Id=child1.P_Id
JOIN child2 ON parentTable.C2_Id=child2.P_Id 
...
JOIN childN ON parentTable.CN_Id=childN.P_Id
4

2 に答える 2

10

結合をチェーンするだけです。

childJoins = parentTable
for child in childTables:
    childJoins = childJoins.join(child)

query = sa.select(['*'], from_obj=childJoins)
于 2013-01-26T20:45:46.510 に答える