2012-10-02 11 views
10

मैं इस कर्सरत्रुटि: कर्सर 'ऑब्जेक्ट कोई गुण नहीं है' _last_executed

cursor.execute("SELECT price FROM Items WHERE itemID = ( 
        SELECT item_id FROM Purchases 
        WHERE purchaseID = %d AND customer_id = %d)", 
        [self.purchaseID, self.customer]) 

मैं यह त्रुटि

'Cursor' object has no attribute '_last_executed' 

लेकिन जब मैं कोशिश यह मिलता है:

cursor.execute("SELECT price FROM Items WHERE itemID = ( 
        SELECT item_id FROM Purchases 
        WHERE purchaseID = 1 AND customer_id = 1)", 
       ) 

है कोई ग़लती नहीं। मैं यह कैसे तय करुं?

+0

आप अंततः यह काम कर रहा हो? के उपयोग के लिए काम किया? – juankysmith

+3

मुझे एक ही त्रुटि संदेश था, लेकिन ओआरएम का उपयोग करना। यह यूनिकोड() के साथ मेरी स्ट्रिंग को encapsulating के साथ हलसेट समस्या हल हो गया। मुझे पता है कि यह आपके प्रश्न का उत्तर नहीं देता है, लेकिन यह उन लोगों के साथ फिट हो सकता है जो इस पृष्ठ पर उत्तर के लिए खोज में उतरते हैं। –

+0

उस टॉमी को पोस्ट करने के लिए धन्यवाद, निश्चित रूप से मुझे – Steve

उत्तर

5

समस्या यह है कि आप अपनी चयन स्ट्रिंग में प्रतिस्थापन ठीक से नहीं बना रहे हैं। डॉक्स से:

def execute(self, query, args=None): 

    """Execute a query. 

    query -- string, query to execute on server 
    args -- optional sequence or mapping, parameters to use with query. 

    Note: If args is a sequence, then %s must be used as the 
    parameter placeholder in the query. If a mapping is used, 
    %(key)s must be used as the placeholder. 

    Returns long integer rows affected, if any 

    """ 

इसलिए, यह होना चाहिए:

cursor.execute("SELECT price FROM Items WHERE itemID = ( 
       SELECT item_id FROM Purchases 
       WHERE purchaseID = ? AND customer_id = ?)", 
       (self.purchaseID, self.customer)) 
+0

में मदद मिली यह अभी भी एक ही त्रुटि उत्पन्न करता है। – skinnyas123

+0

आप किस पायथन का उपयोग कर रहे हैं? – juankysmith

+0

मैं पाइथन 2.7.2+ – skinnyas123

8

मैं भी इस समस्या का सामना करना पड़ा। मैंने% d से% s बदल दिया, और यह हल हो गया है। इच्छा है कि यह आपके लिए उपयोगी है।

+0

यह मेरे लिए काम करता है। मुझे लगता है कि आपको इन्ट्स के लिए भी '% s' पास करना होगा। – user2233706

2

कारण यह है कि आप '% d' का उपयोग कर रहे हैं। जब आप SQL में '%' का उपयोग करते हैं, तो निष्पादन प्रारूप के रूप में '%' की व्याख्या करेगा। आप इस तरह अपने बयान लिखना चाहिए:

cursor.execute("SELECT price FROM Items WHERE itemID = ( 
       SELECT item_id FROM Purchases 
       WHERE purchaseID = %%d AND customer_id = %%d)", 
       [self.purchaseID, self.customer]) 
+0

मुझे एक ही समस्या है, लेकिन [कच्चे प्रश्न] के लिए प्रलेखन (https://docs.djangoproject.com/en/1.5/topics/db/sql/#executing-custom-sql- प्रत्यक्ष रूप से) एक का उपयोग करने के लिए कहता है प्रतिस्थापन के लिए '%'। – user2233706

+0

यह मेरे लिए इसी तरह की स्थिति में काम करता है – Himanshu

1

मुझे डबल %%

"SELECT title, address from table t1, table t2 on t1.id=t2.id where t1.title like '%%Brink%%' " 
+1

उस व्यक्ति के लिए जिसने इसे कम किया है, क्यों समझाया जाए? – Ram

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

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