मैं ओआरएम का उपयोग कर एसक्लाक्लेमी में एक मॉडल उदाहरण (पंक्ति) को डुप्लिकेट करना चाहता हूं। मेरी पहली सोचा यह करने के लिए किया गया था:स्क्लेक्लेमी: पृथक ऑब्जेक्ट का संशोधन
i = session.query(Model)
session.expunge(i)
old_id = i.id
i.id = None
session.add(i)
session.flush()
print i.id #New ID
हालांकि, जाहिरा तौर पर अलग वस्तु अभी भी "याद" क्या आईडी यह था, फिर भी मैं कोई नहीं करने के लिए आईडी सेट, जबकि यह अलग किया गया था। इस प्रकार, session.flush() प्राथमिक कुंजी को शून्य करने के लिए अद्यतन अद्यतन को निष्पादित करने का प्रयास करता है।
क्या यह अपेक्षित व्यवहार है? मैं इस विशेषता की 'मेमोरी' को कैसे हटा सकता हूं, और बस अलग-अलग ऑब्जेक्ट को सत्र में फिर से जोड़ने पर एक नई वस्तु के रूप में व्यवहार कर सकता हूं? सामान्य रूप से, कैसे एक स्क्लेक्लेमी मॉडल उदाहरण क्लोन करता है?
धन्यवाद, डॉक्स में यह नहीं देखा। –
संबंधों को प्रतिलिपि बनाने का उचित तरीका क्या है, @zzzeek? – jmagnusson
मुझे भी इसी तरह की दिलचस्पी है। मुझे एक इकाई (एक पंक्ति) को क्लोन करने में दिलचस्पी है, साथ ही साथ इसके सभी 'बच्चे' इकाइयों (अन्य पंक्तियों में पंक्तियां, इस पंक्ति पर इंगित विदेशी कुंजी के साथ), और इस नई डुप्लिकेट पंक्ति और उसके डुप्लिकेट बच्चों को एक नई मूल इकाई से जोड़ना नई डुप्लिकेट पंक्ति में एक अलग विदेशी कुंजी के माध्यम से (लेकिन मौजूदा इकाई और उसके बच्चे इकाइयों को प्रभावित किए बिना)। मैं SO पर एक अन्य प्रश्न पर यह आंशिक उत्तर देख सकता हूं: http://stackoverflow.com/questions/20112850/sqlalchemy-clone-table-row-with-relations?lq=1 – Soferio