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

Python SQLAlchemy-如何查看新创建记录的主键id?,python,django,sqlalchemy,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(fo

如何查看新创建记录的主键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)
发生的事情是,刷新之前的原始代码只在程序中,在db中没有。id列可能是在插入时自动生成的字段。一旦插入记录(刷新将更改写入数据库),SQLAlchemy基本上会从
执行一个select id并返回结果(各种数据库使用各种机制)。现在你有了身份证

提交和回滚在本质上与刷新不同。它们会影响数据库中已有的内容


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

提交后是否尝试打印(foo.id)?相反,在flush()之后?@Sayse-如果您阅读我的问题,您将看到问题与我描述的完全相同-我需要知道新创建的记录的主键id,以便在DB中添加其他记录时使用它。到目前为止,我做了些什么——我查看了文档,搜索了我在SA上的问题,但上述所有内容都失败了,于是我发布了它。现在,你能回答这个问题吗?@JL Peyret-谢谢,答案是“冲洗后()。谢谢Sayse的帮助:)@JLPeyret-另请参阅@G33K。一点建议是,当你基本上完成了问题的撰写并准备发布它时,看看右边的相关专栏。所以,在你打字的时候分析你的问题文本,并经常找出相关的答案,即使你以前的搜索没有找到它们。很神奇。而且。。。习惯上,如果一个答案能解决你的问题,就接受它:-)这不仅仅是因为它能向其他人表明什么是有效的。最后,她说,这并不是完全错误的,人们确实会用更好的答案奖励更深思熟虑的研究/格式。欢迎登机,谢谢。关于您的最后一段,我(当然还有其他人)很高兴看到一些链接/示例/评论,说明在SQLAlchemy中添加到join ed表中的最佳方法。您必须阅读一下他们的文档。或者找一个好的教程。但是,基本上,您可能有这样的内容:customer=customer(…)order=order(…)order.customer=customer。也就是说,如果指定了2之间的关系。然后,会话刷新应该处理繁重的工作。如果你是专业人士,我建议。这本书有点像一本入门级的书,但它会让你上手的。
 db.session.flush()
 #id is a Python builtin...
 id_= foo.id