Python sqlalchemy在具有关系的表之间插入

Python sqlalchemy在具有关系的表之间插入,python,sqlalchemy,flask-sqlalchemy,Python,Sqlalchemy,Flask Sqlalchemy,问题? 使用sqlalchemy在同一postgres DB中具有关系的表之间插入if new并更新if,最优雅的方法是什么 上下文 用户查看阶段表;可以接受在审核后发送到生产表的更改 与生产表相比,阶段表可能有新记录或刚刚编辑的记录 我从其他问题中找到了如何做到这一点,但所有这些问题都涉及到创建新对象和指定列名,例如 rutable.ru=rustage.ru ...ect.... 我的型号 class rutable(db.Model): id = db.Column(db.I

问题?

使用sqlalchemy在同一postgres DB中具有关系的表之间插入if new并更新if,最优雅的方法是什么

上下文
用户查看阶段表;可以接受在审核后发送到生产表的更改

与生产表相比,阶段表可能有新记录或刚刚编辑的记录

我从其他问题中找到了如何做到这一点,但所有这些问题都涉及到创建新对象和指定列名,例如

 rutable.ru=rustage.ru
 ...ect....
我的型号

class rutable(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    ru    =db.Column(db.String(6), db.ForeignKey('rustage.ru'),unique=True)      

class rustage(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    ru    =db.Column(db.String(6), index=True, unique=True)
    rutablelink = db.relationship('rutable', lazy='dynamic', backref='ruback')
伪代码

#check to see if records exists
if db.session.query(exists().where(models.rutable.id == rurow)).scalar():
    rustage=models.rustage.query.filter_by(id=rurow).first()
    ruprod=models.rutable.query.filter_by(id=rurow).first()
    form = rutable(obj=rustage)
    # import pdb;pdb.set_trace()
    form.populate_obj(ruprod)
else:
    rustage=models.rustage.query.filter_by(id=rurow).first()
    #how do i insert rustage into rutable and reset primary key?
    #without creating a new obj in which i have to specify each column name?
    #e.g. rutable(a=rustage.a,.....  1 million column names (i could use a form?

db.session.commit()
更新

我决定用一张表格
这是我想到的

rustage=models.rustage.query.filter_by(id=rurow).first()
if db.session.query(exists().where(models.rutable.id == rurow)).scalar():
    ruprod=models.rutable.query.filter_by(id=rurow).first()
    form = rutable(obj=rustage)
    form.populate_obj(ruprod)
else:
    ruprod=rutable(ru=rustage.ru)
    form = rutable(obj=rustage)
    form.populate_obj(ruprod)
rustage.reviewEdit=False
ruprod.reviewEdit=False
db.session.commit()