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
उत्तर:
जवाब के लिए 2 № 1यदि आप के साथ मैनुअल fiddling को हटा दें transaction
सब कुछ काम करेगा:
entry = User()
DBSession.add(entry)
DBSession.flush()
print entry.id
चूंकि आप "पिरामिड का उपयोग कर रहे हैंZopeTransactionExtension मैन्युअल रूप से लेनदेन से बचने और पिरामिड पर छोड़ने के लिए बेहतर है - यदि आपका कोड अपवाद उठाता है तो लेनदेन सफलता के लिए प्रतिबद्ध होगा और वापस लुढ़क जाएगा।