SQLAlchemy - 如何查看新创建记录的主键ID?

时间:2016-03-15 14:53:25

标签: python django sqlalchemy

如何查看新创建记录的主键ID?

models.py:

class Foo(db.Model):
    id = db.Column(db.Integer, primary_key = True)
    foobar = db.Column(db.String(64), unique = True)
def __init__(self, foobar):
    self.foobar = foobar

views.py:

foo = Foo(foobar)
db.session.add(foo)
id = How?(foo.id)

1 个答案:

答案 0 :(得分:1)

 db.session.flush()
 #id is a Python builtin...
 id_= foo.id

发生的事情是,刷新前的原始代码只在程序中,db中没有。 id列可能是在插入时分配的自动生成字段。插入记录后( flush 将更改写入数据库),SQLAlchemy基本上从<inserted>执行选择ID并返回结果(各种数据库使用各种机制)。现在你已经填充了id。

提交和回滚在性质上与flush不同。它们会影响数据库中已经的内容

此外,标记您的评论我需要在DB 中添加其他记录时使用它。我解释了如何获取id字段值,但这并不意味着它适合在更广泛的上下文中使用。 SQLAlchemy有不同的方法在flush()之前链接记录。