1

模型.py

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

视图.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
4

1 回答 1

2

如果您删除手动摆弄transaction一切都会起作用:

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

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

于 2013-06-27T18:54:05.230 回答