如何查看新创建记录的主键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)
答案 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()之前链接记录。