req = Test() setattr(req, 'test', 1); session.add(req) print req.id
如何获取req对象的最后一个ID?sqlalchemy和最后一个插入ID
req = Test() setattr(req, 'test', 1); session.add(req) print req.id
如何获取req对象的最后一个ID?sqlalchemy和最后一个插入ID
您应该首先提交它(在session.add(req)
之后)。
如果在最终的打印语句之前执行session.commit(),则会设置id属性。正如所写的,引擎没有理由执行任何SQL查询,因此该对象尚未被插入。一旦运行查询(在会话刷新或提交时),该ID将在那里。
flush()就足够了,它会执行查询并填充自动ID。
但我想在一个事务中的其他表中插入req.id。 – Bdfy 2011-05-07 23:13:06
然后你应该使用关系数据库布局。阅读[本教程](http://www.sqlalchemy.org/docs/orm/tutorial.html)。当然,你可以尝试在表中选择最大索引('SELECT MAX(id)FROM table'),你的对象的索引应该是这个最大索引+ 1,但它不是很安全 - 它可能会导致竞争条件这在同一时间运行)。 – 2011-05-08 09:38:08