微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQLALCHEMY 中的外键映射问题

如何解决SQLALCHEMY 中的外键映射问题

我有两种模式,一种是 IndexDetails,另一种是 PriceIndex。在 PriceIndex 外键没有正确映射 IndexDetails 主 keys.parent_id 应该在 1 到 4 之间,但它没有。

class IndexDetails(Base):
    __tablename__ = 'index_details'
    __table_args__ = ({"schema": "demo"})
    id = Column(Integer,primary_key=True,nullable= False,\ unique=True,autoincrement=True)
    ticker = Column(String(20))
    name=Column(String(20))
    region=Column(String(20))
    # children = relationship("IndexPrice",back_populates="parent")
    tracker_data = relationship("IndexPrice",backref="parent")



class IndexPrice(Base):
    __tablename__ = 'child_index'
    __table_args__ = ({"schema": "demo"})
    id = Column(Integer,unique= True,autoincrement=True)
    ticker = Column(String(20))
    asof_date = Column(Date)
    last_price = Column(Float)
    parent_id = Column(Integer,ForeignKey('demo.index_details.id'))

def main():
    engine = setup_db_conn()
    create_db_schema(engine)

    session=start_session(engine)

    df=pd.read_csv('test1.csv')
    # print(df.head())
    for _,row in df.iterrows():
        data = IndexDetails(ticker=row['Ticker'],name=row['Name'],region=row['Region'])
        session.add(data)
        session.flush()
    session.commit()


    session=start_session(engine)
    df=pd.read_csv('test2.csv')
    for _,row in df.iterrows():

        data = IndexPrice(ticker=row['Ticker'],asof_date=row['Date'],last_price=row['LastPrice'],parent=IndexDetails(ticker=row["Ticker"]))

        session.add(data)
    session.commit()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。