oracle复制表数据到另一张表_SQLAlchemy:一张表的两个字段,指向另一张表的id

5fdd8cebd3d07df55a50000dfcd5e591.png

最近两周都在写表定义,遇到一种情况,一张记录用户关心的字段(roi -- region of interest),另一张,记录怎么样用“用户关心的字段”进行二元运算。

表结构:

ROI表:

__table__ = 'roi'

roi_id

...

Formula表:

操作符

roi_left = ...ForeignKey('ROI.id')

roi_right=...ForeignKey('ROI.id')

如果要利用SQLAlchemy的关联关系辅助查询数据,就需要加relationship定义

roi_relationship = relationship("Formula",secondary="roi",primaryjoin="Formula.roi_left == roi.id", secondaryjoin="Formula.roi_right == roi.id")

修改models/core.py之后,用superset db migrate能生成升级脚本,还没有实际查询数据。

如果查询数据遇到问题,再来补充。

其他:

backref为什么叫back?应该是反向的意思,从关系的另一端往回查,就叫back。

sqlalchemy外键和relationship查询 - 金色旭光 - 博客园​www.cnblogs.com
4e0f80d5d377bac0ecba5651608a5bd2.png

这篇文章中的例子:

class Company(Base):
14 
15     __tablename__ = "company"
16 
17     name = Column(String(20),primary_key=True)
18     location = Column(String(20))
19  
20     def __repr__(self):
21         return "name:{0} location:{1}".format(self.name,self.location)
22  
23 class Phone(Base):
24     
25     __tablename__ = "phone"
26 
27     id = Column(Integer,primary_key=True)
28     model = Column(String(32))
29     price = Column(String(32))
30     company_name = Column(String(32),ForeignKey("company.name"))
31     company = relationship("Company",backref="phone_of_company") 
32  
33     def __repr__(self):
34         return "{0} model:{1},sales:{2} sales:{3} price:{4}".format(self.id,self.model,self.sales,self.price)

company = relationship("Company",backref="phone_of_company")

backref的名字和所在类的__tablename__可以不同(我是接触Superset之后才开始了解SQLAlchemy,一直以为backref的名字要和__tablename__的名字相同)。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值