0

顧客リスト/注文の「クラシック」モデルと同様の設定があります。私の場合は、1 つのモデルがティッカーを CIK (レポート エンティティの SEC の ID #) にマップする SEC データです。CIK とティッカーは、各企業に固有のものです。別のテーブルには、レポートに関する情報が保持されます。企業は複数のレポート (四半期ごとの収益、年次など) を持つことができます。ティッカーとレポートを結び付けるための外部キーとして CIK を使用しています。

目標は、ティッカーでフィルタリングして、会社に関連するすべてのレポートを取得することです。次のステートメントは「機能します」(そのままで、エラーは返されません) が、必要な会社 (yahoo のレポートなど) だけでなく、すべての会社からレポートを取得します。

for instance in session.query(SEC_RSS_Model).filter(CIK_Model.ticker == 'YHOO'):
    print instance.edgarlink

上記のステートメントは、SEC_RSS ( SEC_RSS_Modelに関連付けられたテーブル) の内容全体を出力します。つまり、フィルタリングはまったく行われません。

私の SQLAlchemy モデル:

class CIK_Model(Base):
    __tablename__ = 'CIK_Table'
    id = Column(Integer, primary_key=True)
    CIK = Column(String(10), unique=True)
    ticker = Column(String(8))
    RSS = relationship("SEC_RSS_Model", backref="CIK_Table")

def __init__(self, CIK, ticker):
    self.CIK = CIK
    self.ticker = ticker

def __repr__(self):
    return "<CIK_Table('%s','%s')>" % (self.CIK, self.ticker)   

class SEC_RSS_Model(Base):
    __tablename__ = 'SEC_RSS'
    id = Column(Integer, primary_key=True)
    CIK = Column(String(10),ForeignKey ( "CIK_Table.CIK" ))
    edgarlink = Column(String(128), unique=True)

    def __init__(self, CIK, edgarlink):
        self.CIK = CIK
        self.edgarlink = edgarlink

    def __repr__(self):
        return "<SEC_RSS('%s','%s')>" % (self.CIK, self.edgarlink) 

ここで何が間違っていると定義していますか? このモデルは多対 1 ですか、それとも 1 対多ですか? 関係は適切に設定されていますか?

4

1 に答える 1