从SQLAlchemy中插入的记录中获取ID

时间:2013-06-27 15:46:22

标签: mysql sqlalchemy pyramid

models.py

class User(Base):
  __tablename__ = 'users'
  id = Column(Integer, primary_key = true, autoincrement=true)
  ...

views.py

entry = User()
with transaction.manager:
  DBSession.add(entry)
  DBSession.flush()
transaction.commit()
pdb.set_trace()

现在我跑

print user.id

我得到了

DetachedInstanceError: Instance <Userat 0x3ebc310> is not bound to a Session

如果我改变,如果从添加到合并它只是给我

none

1 个答案:

答案 0 :(得分:2)

如果删除transaction的手动摆弄,一切都会有效:

entry = User()
DBSession.add(entry)
DBSession.flush()
print entry.id

由于您使用的是Pyramid和ZopeTransactionExtension,最好避免手动处理事务并将其留给Pyramid - 如果您的代码引发异常,事务将在成功时提交并回滚。