【问题标题】:Get inserted key before commit session在提交会话之前获取插入的密钥
【发布时间】:2015-03-30 07:41:15
【问题描述】:
class Parent(db.Model):
    id = db.Column(db.Integer, primary_key=True)

class Child(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    parent_id = db.Column(db.Integer, db.ForeignKey('parent.id'))

parent = Parent()
db.session.add(parent)

child = Child()
child.parent_id = parent.id
db.session.add(child)

db.session.commit()

考虑到parent_id 必须包含在child 表中,我想插入 到会话中的parentchild 表中。在我创建child 对象的那一刻,parent.idNone

我怎样才能做到这一点?

【问题讨论】:

    标签: python flask sqlalchemy flask-sqlalchemy


    【解决方案1】:

    您可以使用flush() 刷新对数据库的更改,从而更新您的主键字段:

    parent = Parent()
    db.session.add(parent)
    db.session.flush()
    
    print parent.id  # after flush(), parent object would be automatically
                     # assigned with a unique primary key to its id field 
    
    child = Child()
    child.parent_id = parent.id
    db.session.add(child)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-02-14
      • 2020-04-15
      • 2018-03-16
      • 2010-10-13
      • 2020-06-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多