在提交对象之前从SqlAlchemy获取主键

时间:2017-01-19 20:06:52

标签: python postgresql python-3.x sqlalchemy

我一直在使用sqlalchemy和postgres,不知道如何解决这个问题。

我希望在提交到DB之前获取主键的值。

我有一个名为process的类,它有proc_id和另一个名为proc_num的元素。

class process(db.Model):
    __tablename__ = 'tb_processos'
    proc_id = db.Column(db.Integer, primary_key=True, nullable=False,
                        autoincrement=True, unique=True)
    proc_num = db.Column(db.String(20))

由于我的原因,proc_num必须是String类型。

当我创建我的对象时,我希望proc_num接收proc_id。

这样做的最佳方法是什么?

对不起我的英文:/

THX

1 个答案:

答案 0 :(得分:3)

您可以使用flush()方法,在您致电commit()之前,更改不会永久保留到磁盘:

p = process(proc_num=45)
db.session.flush(p)
p = process.query.filter_by(proc_num=45)
p.proc_id

# finally you can call commit
db.session.commit()