我剛纔遇到了一個相當棘手的問題,經過測試,我發現沒有可用的答案就足夠了。使用SQLAlchemy從MySQL獲取最後插入的值
我看過各種建議,但似乎沒有人能夠返回MySQL中auto_increment字段的最後一個插入值。
我見過使用session.flush()添加記錄然後檢索id的示例。但是似乎總是返回0
我也看到,提到使用session.refresh(例子),但會引發以下錯誤:InvalidRequestError:無法刷新例如'
我是什麼試圖做似乎非常簡單,但我似乎無法弄清楚這個祕密。
我正在使用聲明式的方法。
所以,我的代碼看起來是這樣的:
class Foo(Base):
__tablename__ = 'tblfoo'
__table_args__ = {'mysql_engine':'InnoDB'}
ModelID = Column(INTEGER(unsigned=True), default=0, primary_key=True, autoincrement=True)
ModelName = Column(Unicode(255), nullable=True, index=True)
ModelMemo = Column(Unicode(255), nullable=True)
f = Foo(ModelName='Bar', ModelMemo='Foo')
session.add(f)
session.flush()
在這一點上,對象f,已被推到數據庫,並已自動分配一個唯一的主鍵ID。但是,我似乎無法找到一種方法來獲取在一些額外操作中使用的值。我想做到以下幾點:
my_new_id = f.ModelID
我知道我可以簡單地執行另一個查詢基於其它參數來查找ModelID但我寧願不要,如果在所有可能的。
我非常感謝對此問題的解決方案的任何見解。
感謝您的幫助提前。
很好的捕獲,沒有注意到默認= 0。 – 2011-12-21 11:09:58
服務器日誌將始終工作,以找到問題:) – Nilesh 2011-12-21 11:34:26
呃...是的,很好的接收。我的頭在創建表時需要主鍵字段缺省值的SQL環境中。感謝您的發現。 – PlaidFan 2011-12-22 14:16:53