/ / SQLAlchemy में सम्मिलित रिकॉर्ड से आईडी प्राप्त करना - mysql, sqlalchemy, पिरामिड

SQLAlchemy में एक सम्मिलित रिकॉर्ड से आईडी प्राप्त करना - mysql, sqlalchemy, पिरामिड

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 मैन्युअल रूप से लेनदेन से बचने और पिरामिड पर छोड़ने के लिए बेहतर है - यदि आपका कोड अपवाद उठाता है तो लेनदेन सफलता के लिए प्रतिबद्ध होगा और वापस लुढ़क जाएगा।