python - How can I reinsert a row using SQLAlchemy? -


आइटम को मैं दिए गए विवरण के साथ जोड़ने के लिए: db.session.add (new_item) । आइटम को हटाने के लिए: db.session.query (आइटम) .filter_by (item_id = new_id) .delete () । आइटम के कुछ हिस्सों को अपडेट करने के लिए: db.session.query (आइटम) .filter_by (item_id = new_id) .update ({"status": "1"})

यदि मैं आइटम को पूरी तरह से संपादित करना चाहता हूं, तो मुझे क्या करना चाहिए, अर्थात, उसी आइटम के लिए डेटा को फिर से जोड़ना है?

यहां फ़ॉर्म के लिए कोड है:

  & Lt; form class = "form" action = "{{url_for ('new_item')}}" विधि = "पोस्ट" रोल = "फॉर्म" एनकटीप = मल्टीपार्ट / फॉर्म-डेटा & gt; {{Form.csrf_token}} & lt; तालिका & gt; & LT; टीआर & gt; & LT; टीडी & gt; & Lt; div वर्ग = "फॉर्म-समूह" & gt; & Lt; label = "item_name" & gt; आइटम नाम: & lt; / label & gt; & Lt; इनपुट नाम = "नाम" प्रकार = "टेक्स्ट" वर्ग = "फ़ॉर्म-नियंत्रण" id = "item_name" & gt; & Lt; / div & gt; & Lt; / टीडी & gt; & LT; टीडी & gt; & Lt; div वर्ग = "फॉर्म-समूह" & gt; & Lt; label = "item_price" & gt; आइटम की कीमत & lt; / label & gt; & Lt; इनपुट नाम = "मूल्य" प्रकार = "संख्या" वर्ग = "फ़ॉर्म-नियंत्रण" id = "item_price" & gt; & Lt; / div & gt; & Lt; / टीडी & gt; & LT; टीडी & gt; & Lt; div वर्ग = "फॉर्म-समूह" & gt; & Lt; label = "photo" के लिए & gt; फोटो डाउनलोड करें & lt; / label & gt; & Lt; इनपुट प्रकार = "फ़ाइल" नाम = "फ़ाइल" & gt; & Lt; p वर्ग = "सहायता-ब्लॉक" & gt; डाउनलोड & lt; / p & gt; & Lt; / div & gt; & Lt; / टीडी & gt; & Lt; / टीआर & gt; & LT; टीआर & gt; & LT; टीडी & gt; & Lt; div वर्ग = "फॉर्म-समूह" & gt; & Lt; लेबल = "item_category" & gt; श्रेणी: & lt; / label & gt; & Lt; नाम चुनें = "श्रेणी" वर्ग = "फॉर्म-नियंत्रण" id = "item_category" & gt; & LT; विकल्प & gt; लेगो & lt; / विकल्प & gt; & LT; विकल्प & gt; Игры_и_игрушки & lt; / विकल्प & gt; & LT; विकल्प & gt; Малыш & lt; / विकल्प & gt; & LT; विकल्प & gt; Школа_и_канцтовары & lt; / विकल्प & gt; & LT; विकल्प & gt; Творчество_и_развитие & lt; / विकल्प & gt; & Lt; / चयन & gt; & Lt; / div & gt; & Lt; / टीडी & gt; & Lt; / टीआर & gt; & Lt; / तालिका & gt; & Lt; div वर्ग = "फॉर्म-समूह" & gt; & Lt; label = "item_description" के लिए & gt; आइटम का विवरण: & lt; / label & gt; & Lt; textarea name = "description" class = "form-control" id = "item_description" पंक्तियाँ = "3" & gt; & lt; / textarea & gt; & Lt; / div & gt; & Lt; बटन प्रकार = "सबमिट करें" वर्ग = "बीटीएन बीटीएन-डीफॉल्ट" & gt; सहेजें & lt; / button & gt; & Lt; / प्रपत्र & gt;  

यहां फॉर्म के लिए मार्ग है वस्तुओं को अपडेट करने और इसे हटाने के लिए, दूसरों के साथ-साथ ये भी हैं, लेकिन मुझे लगता है कि यह पर्याप्त होना चाहिए

  @ app.route ('/ admin_items', methods = [' GET ',' POST ']) def admin_items (): प्रपत्र = AddItemForm (request.form) उपलब्ध = db.session.query (आइटम) .filter_by (स्थिति =' 1 ')। Order_by (item.name.asc () ) Not_available = db.session.query (item) .filter_by (स्थिति = '0')। Order_by (item.name.asc ()) return render_template ('admin_items.html', available_items = available, not_available_items = not_available, form = Form) @ app.route ('/ add_item', methods = ['GET', 'POST']) @login_required def new_item (): त्रुटि = कोई भी रूप नहीं = addItemForm (request.form) अगर request.method == 'POST ': File = request.files [' file '] अगर फ़ाइल और अनुमति_ फ़ाइल (file.filename) और form.name.data! = "" और form.description.data! = "": Filename = secure_filename (file.filename) file.save (Os.path.join (app.config ['UPLOADED_ITEMS_DEST'], फ़ाइलनाम)) new_item = आइटम (फ़ाइल का नाम, फ़ॉर्म.नाव.डेटा, फ़ॉर्म.डेटाडेटाडेटा, फॉर्म.प्रिस। डेटा, form.age.data, फ़ॉर्म .particles.data, form.category.data, '1',) db.session.add (new_item) db.session.commit () रिडायरेक्ट रिडर (url_for ('admin_items')) अन्य: return render_template ('admin_items.html ', फॉर्म = फॉर्म, त्रुटि = त्रुटि) यदि request.method ==' GET ': रिटर्न रीडायरेक्ट (url_for (' admin_items '))  

आप अद्यतन खंड .update ({" status ":" 1 "," color ":" red "}) में अधिक तत्व निर्दिष्ट कर सकते हैं या आप ऑब्जेक्ट को डेटाबेस से पकड़ सकते हैं और बस इसे आवश्यकतानुसार बदल सकते हैं:

  आइटम = db.session.query (आइटम) .get (1) # पीके # 1 के साथ आइटम को पकड़ो। Item.status = '1' item.colour = 'red' db.session.commit () # डेटाबेस में आपके परिवर्तनों को कमिट करें।  

Comments