2010-08-04 15 views
9

मैं अजगर 2.7 और pymssql 1.9.908 का उपयोग कर रहा हूं।मैं पाइथन के साथ SQL पैरामीटर का उपयोग कैसे करूं?

डेटाबेस मैं कुछ इस तरह करना होगा क्वेरी करने के लिए .net में:

using (SqlCommand com = new SqlCommand("select * from Customer where CustomerId = @CustomerId", connection)) 
{ 
    com.Parameters.AddWithValue("@CustomerID", CustomerID); 
    //Do something with the command 
} 

मैं यह पता लगाने की क्या बराबर अजगर और अधिक विशेष रूप pymssql के लिए है कोशिश कर रहा हूँ। मुझे एहसास है कि मैं सिर्फ स्ट्रिंग स्वरूपण कर सकता हूं, हालांकि ऐसा लगता है कि पैरामीटर की तरह ठीक से बचने वाला हैंडल नहीं लगता है (मैं उस पर गलत हो सकता हूं)।

मैं इसे पायथन में कैसे कर सकता हूं?

+0

उत्कृष्ट प्रश्न और उत्तर। क्या किसी को पता है कि जेसन जैसे * NAMED * पैरामीटर का उपयोग कैसे किया जाए। अब तक मैं केवल% s,% d प्रकार की सामग्री (स्थितित्मक) का उपयोग करने में सक्षम हूं। –

उत्तर

19

एक कनेक्शन वस्तु db बनाने के बाद:

cursor = db.execute('SELECT * FROM Customer WHERE CustomerID = %s', [customer_id]) 

फिर परिणामी cursor वस्तु की fetch... से किसी भी विधि का उपयोग करें।

%s हिस्सा द्वारा मूर्ख मत जा: इस स्ट्रिंग स्वरूपण नहीं है, यह पैरामीटर प्रतिस्थापन (विभिन्न डीबी एपीआई मॉड्यूल पैरामीटर प्रतिस्थापन के लिए अलग सिंटैक्स का उपयोग करें - pymssql सिर्फ दुर्भाग्यपूर्ण %s उपयोग करने के लिए होता है -!) है।

+2

धन्यवाद। '% S' वाक्यविन्यास मुझे फेंक रहा था। –

+0

@ जेसन, आपका स्वागत है - और संभावित भ्रम ठीक है, मैं डीबी एपीआई पैरामीटर के लिए उस वाक्यविन्यास को "दुर्भाग्यपूर्ण" कहता हूं (हालांकि कई लोकप्रिय डीबी एपीआई मॉड्यूल इसका उपयोग करते हैं, हां)। –

+1

इस भ्रामक% s वाक्यविन्यास को डर! मैंने बस एक घंटे बिताया कि यह समझने की कोशिश कर रहा है कि मेरा कोड एक int पैरामीटर निर्दिष्ट करने के लिए% d का उपयोग करने के प्रयास के लिए क्यों शिकायत करता है। मुझे लगता है कि यह पाइथन स्वरूपण है जो यहां उपयोग में है। – Passiday

संबंधित मुद्दे