6

他の2つのクラスとRの間のam:n関係を実装するsqlalchemyクラスがあります。したがって、2つの整数列があり、参照されるインスタンスのIDを保持します。また、2つのプロパティがあり、これらはを介して定義されます。これは、ドキュメントでここに説明されているものとほぼ同じです。ABRsource_idtarget_idRsource_objtarget_objrelationship

私がやりたいのは、から参照されたクラスを取得することですR。私はsqlalchemy0.8を使用していて、でinspect()メソッドを使用しようとしましたが、あまり役に立たないように思われるR.source_objaしか返されません。InstrumentedAttribute少なくとも、有用な情報を抽出したり、それに関するドキュメントを見つけたりすることはできませんでした。

どんな助けでも大歓迎です!どうすれば取得できますAか?BR

4

2 に答える 2

4

このようなことを試してください。私もこれを扱っていますが、ドキュメントが見つかりません。これが開始に役立つと思います。

from sqlalchemy import inspect

i = inspect(model)
for relation in i.relationships:
    print(relation.direction.name)
    print(relation.remote_side)
    print(relation._reverse_property)
    dir(relation)
于 2013-05-08T02:34:50.237 に答える
0

私はこの同じ問題に一日の大半を費やし、テーブルを取り込んでから、リレーションシップまたは外部キーを介して接続されているテーブル名のリストを吐き出すリスト内包表記を作成することができました。その文字列を実際のクラスへの参照に変換する必要がありますが、それ以外の場合は問題なく機能します。

relationship_list = [str(list(column.remote_side)[0]).split('.')[0] for column \
                    in inspect(table).relationships]

を削除する.split('.')[0]と、接続によって参照される実際の列のリストを取得できます。理解はかなり醜いですが、それは機能します。これが私と同じものを探している他の人に役立つことを願っています!

于 2013-07-29T23:23:58.320 に答える