2012-02-21 9 views
0

私はanswerを私の質問には間違った形式で見つけました。 SQL錬金術を使用表Aから表Bの2つの列を結合します。

私は表Aは、場所コードのための2つの列が含まれてい

表Bの一つの列に表Aの列に参加したいです。私はテーブルBに参加してロケーション名を取得できますが、これを行う方法は?

model.LocationRequest.location.location_name 

しかし、私は2をマッピングしていますので:のみこれらの列の1が第二のテーブルにマップされた場合

locationreq = sa.Table("INMPTL_LOCATION_REQUEST", meta.metadata, 
    sa.Column("request_id", sa.types.String(), primary_key=True), 
    sa.Column("status", sa.types.String(100)), 
    sa.Column("new_loc", sa.types.String(), sa.ForeignKey("INMPTL_LOCATIONS_TBL.inmptl_location_code")), 
    sa.Column("previous_loc", sa.types.String(), sa.ForeignKey("INMPTL_LOCATIONS_TBL.inmptl_location_code")), 
    autoload=True, 
    autoload_with=engine) 

locationtable = sa.Table("INMPTL_LOCATIONS_TBL", meta.metadata, 
    sa.Column("INMPTL_LOCATION_CODE", sa.types.Integer(), primary_key=True), 
    autoload=True, 
    autoload_with=engine) 

orm.mapper(Location, locationtable) 
orm.mapper(LocationRequest, locationreq, extension= wf.WorkflowExtension(), properties = {'location':relation(Location)} 

、私のような何かを呼び出すことができます。

は、これまでのところ私はこれを持っています同じテーブルへの列、それは混乱している。

誰でもこれを達成するための適切な方法を知っていますか?

答えて

1

私はこの質問を削除しようとしていましたが、これは重複していません。答えはhere(プライマリとセカンダリの結合を設定)

orm.mapper(LocationRequest, locationreq, extension= wf.WorkflowExtension(), 
    properties={ 
     "new_location":relation(Location, 
     primaryjoin=locationtable.c.inmptl_location_code==locationreq.c.new_loc, lazy = False), 
     "previous_location":relation(Location, 
     primaryjoin=locationtable.c.inmptl_location_code==locationreq.c.previous_loc, lazy = False) 
     }) 
関連する問題