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