2011-05-07 93 views

回答

2

您应该首先提交它(在session.add(req)之后)。

+0

但我想在一个事务中的其他表中插入req.id。 – Bdfy 2011-05-07 23:13:06

+0

然后你应该使用关系数据库布局。阅读[本教程](http://www.sqlalchemy.org/docs/orm/tutorial.html)。当然,你可以尝试在表中选择最大索引('SELECT MAX(id)FROM table'),你的对象的索引应该是这个最大索引+ 1,但它不是很安全 - 它可能会导致竞争条件这在同一时间运行)。 – 2011-05-08 09:38:08

0

如果在最终的打印语句之前执行session.commit(),则会设置id属性。正如所写的,引擎没有理由执行任何SQL查询,因此该对象尚未被插入。一旦运行查询(在会话刷新或提交时),该ID将在那里。

0

flush()就足够了,它会执行查询并填充自动ID。