SQLAlchemy ORM - वस्तुओं को अद्यतन करना

इस अध्याय में, हम देखेंगे कि वांछित मानों के साथ तालिका को कैसे संशोधित या अद्यतन किया जाए।

किसी भी वस्तु की एक निश्चित विशेषता के डेटा को संशोधित करने के लिए, हमें इसके लिए नए मूल्य को असाइन करना होगा और परिवर्तन को स्थायी बनाने के लिए परिवर्तनों को प्रतिबद्ध करना होगा।

आइए उस तालिका से एक ऑब्जेक्ट लाएं जिसकी प्राथमिक कुंजी पहचानकर्ता, ID = 2 के साथ हमारे ग्राहक तालिका में है। हम सत्र की विधि () का उपयोग इस प्रकार कर सकते हैं -

x = session.query(Customers).get(2)

हम नीचे दिए गए कोड के साथ चयनित वस्तु की सामग्री प्रदर्शित कर सकते हैं -

print ("Name: ", x.name, "Address:", x.address, "Email:", x.email)

हमारे ग्राहकों की तालिका से, निम्न आउटपुट प्रदर्शित होना चाहिए -

Name: Komal Pande Address: Koti, Hyderabad Email: [email protected]

अब हमें नीचे दिए गए अनुसार नए मान निर्दिष्ट करके पता फ़ील्ड अपडेट करना होगा -

x.address = 'Banjara Hills Secunderabad'
session.commit()

परिवर्तन लगातार डेटाबेस में परिलक्षित होगा। अब हम तालिका में पहली पंक्ति के उपयोग से संबंधित वस्तु लाते हैंfirst() method निम्नानुसार है -

x = session.query(Customers).first()

यह SQL एक्सप्रेशन के बाद निष्पादित होगा -

SELECT customers.id 
AS customers_id, customers.name 
AS customers_name, customers.address 
AS customers_address, customers.email 
AS customers_email
FROM customers
LIMIT ? OFFSET ?

बाउंड पैरामीटर क्रमशः LIMIT = 1 और OFFSET = 0 होंगे, जिसका अर्थ है कि पहली पंक्ति का चयन किया जाएगा।

print ("Name: ", x.name, "Address:", x.address, "Email:", x.email)

अब, पहली पंक्ति प्रदर्शित करने वाले उपरोक्त कोड के लिए आउटपुट निम्नानुसार है -

Name: Ravi Kumar Address: Station Road Nanded Email: [email protected]

अब नाम विशेषता बदलें और नीचे दिए गए कोड का उपयोग करके सामग्री प्रदर्शित करें -

x.name = 'Ravi Shrivastava'
print ("Name: ", x.name, "Address:", x.address, "Email:", x.email)

उपरोक्त कोड का आउटपुट है -

Name: Ravi Shrivastava Address: Station Road Nanded Email: [email protected]

भले ही परिवर्तन प्रदर्शित हो, यह प्रतिबद्ध नहीं है। आप का उपयोग करके पहले की लगातार स्थिति बनाए रख सकते हैंrollback() method नीचे दिए गए कोड के साथ।

session.rollback()

print ("Name: ", x.name, "Address:", x.address, "Email:", x.email)

पहले रिकॉर्ड की मूल सामग्री प्रदर्शित की जाएगी।

बल्क अपडेट के लिए, हम क्वेरी ऑब्जेक्ट के अपडेट () पद्धति का उपयोग करेंगे। आइए हम कोशिश करते हैं और एक उपसर्ग देते हैं, 'मि।' प्रत्येक पंक्ति में नाम के लिए (आईडी = 2 को छोड़कर)। इसी अद्यतन () बयान इस प्रकार है -

session.query(Customers).filter(Customers.id! = 2).
update({Customers.name:"Mr."+Customers.name}, synchronize_session = False)

The update() method requires two parameters as follows −

  • कुंजी के मूल्यों का एक शब्दकोश, जिसे अद्यतन किए जाने की विशेषता है, और विशेषता की नई सामग्री होने का महत्व है।

  • सत्र में विशेषताएँ अद्यतन करने के लिए रणनीति का उल्लेख करते हुए सिंक्रोनाइज़_ सत्र विशेषता। मान्य मान झूठे हैं: सत्र को सिंक्रनाइज़ नहीं करने के लिए, लाने के लिए: अद्यतन क्वेरी से मेल खाने वाली वस्तुओं को खोजने के लिए अद्यतन से पहले एक चुनिंदा क्वेरी करता है; और मूल्यांकन: सत्र में वस्तुओं पर मानदंड का मूल्यांकन करें।

तालिका में 4 में से तीन पंक्तियों में 'मि' के साथ उपसर्ग नाम होगा। हालाँकि, परिवर्तन प्रतिबद्ध नहीं हैं और इसलिए यह SQLiteStudio के तालिका दृश्य में परिलक्षित नहीं होगा। जब हम सत्र करेंगे तब ही इसे रीफ्रेश किया जाएगा।