1

models.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

ZopeTransactionExtension で Pyramid を使用しているため、手動でトランザクションを処理することを避け、Pyramid に任せたほうがよいでしょう - トランザクションは成功するとコミットされ、コードが例外を発生させるとロールバックされます。

于 2013-06-27T18:54:05.230 に答える