मेरे पास नई वस्तुओं का अनुक्रम है। वे सभी इस के समान दिखाई देते हैं:sqlalchemy डालने या अपडेट करने का आसान तरीका?
फू (pk_col1 = एक्स, pk_col2 = y, वैल = 'बार')
उन में से कुछ फू है कि मौजूद (यानी केवल वैल पंक्ति से DB में अलग कर रहे हैं) और अद्यतन क्वेरी उत्पन्न करना चाहिए। दूसरों को आवेषण उत्पन्न करना चाहिए।
मैं ऐसा करने का कुछ तरीके के बारे में सोच सकते हैं, सबसे अच्छा किया जा रहा है:
pk_cols = Foo.table.primary_key.keys()
for f1 in foos:
f2 = Foo.get([getattr(f1, c) for c in pk_cols])
if f2 is not None:
f2.val = f1.val # update
# XXX do we need to do session.add(f2)
# (or at least keep f2 alive until after the commit?)
else:
session.add(f1) # insert
session.commit()
वहाँ एक आसान तरीका है?
यह http://stackoverflow.com/questions/708762/sqlalchemy-insert-or-replace-equivalent या http://stackoverflow.com/questions/1330475/how-do-i- कुशलता से डुप्लिकेट जैसा दिखता है -do-a-bulk-insert-or-update-with-sqlalchemy –
@Duffy - एक ही सवाल नहीं है क्योंकि मुझे वास्तव में पाइथन में सम्मिलन से अद्यतनों में अंतर करने की आवश्यकता है, मैं इसे डेटाबेस में गैर- -पोर्ट योग्य एसक्यूएल एक्सटेंशन। – Eloff