मैं एक उदाहरण के रूप एसक्यूएल कार्यों का सरलतम ले लेंगे:psycopg2 मेरे किसी भी SQL फ़ंक्शन को निष्पादित क्यों नहीं कर रहा है? (IndexError: सीमा से बाहर टपल इंडेक्स)
CREATE OR REPLACE FUNCTION skater_name_match(INTEGER,VARCHAR)
RETURNS BOOL AS
$$
SELECT $1 IN (SELECT skaters_skater.competitor_ptr_id FROM skaters_skater
WHERE name||' '||surname ILIKE '%'||$2||'%'
OR surname||' '||name ILIKE '%'||$2||'%');
$$ LANGUAGE SQL;
अगर मैं कॉपी और psql (PostgreSQL के खोल) में पेस्ट करेंगे तो यह बिना किसी समस्या के कार्यान्वित ।
अगर मैं (एक वास्तविक डेटाबेस नाम और निश्चित रूप से उपयोगकर्ता के साथ) इस तरह अजगर कोड का एक टुकड़ा लिखें:
import psycopg2
sql_function_above = '''CREATE OR REPLACE FUNCTION skater_name_match(INTEGER,VARCHAR)
RETURNS BOOL AS
$$
SELECT $1 IN (SELECT skaters_skater.competitor_ptr_id FROM skaters_skater
WHERE name||' '||surname ILIKE '%'||$2||'%'
OR surname||' '||name ILIKE '%'||$2||'%');
$$ LANGUAGE SQL;'''
try:
connection = psycopg2.connect("dbname='x' user='x' host='localhost' password='x'");
except:
print "I am unable to connect to the database"
cursor = connection.cursor()
cursor.execute(sql_function_above)
यह लगता (यह मुझे एक त्रुटि नहीं देता है) निष्पादित करने के लिए, लेकिन जब मैं डेटाबेस में देखता हूं तो फ़ंक्शन वहां नहीं होता है।
जब मैं syncdb के दौरान ऐप/एसक्यूएल/model.sql फ़ाइल मैं निम्नलिखित त्रुटि मिलती है में इसके सामने Django में कोड निष्पादित करने के लिए प्रयास करें:
IndexError: tuple index out of range
जब मैं लिखने के लिए अपने खुद के प्रबंधन की कोशिश करो। py कमांड जो SQL को निष्पादित करेगा, मुझे एक ही त्रुटि मिलती है।
यहां क्या हो रहा है? इस पर कुछ प्रकाश डालने वाले किसी भी व्यक्ति के लिए बहुत आभारी रहेंगे :) जब भी पाइथन और डीजेगो की बात आती है, तब भी मैं नौसिखिया हूं, इसलिए मैंने कुछ स्पष्ट रूप से अनदेखा कर दिया होगा।
क्या आप "कर्सर" में निष्पादित वास्तविक कथन जोड़ सकेंगे।निष्पादित करें (sql_function_above) "(या दिखाएं कि आपने 'sql_function_above' को परिभाषित किया है, यदि आप सचमुच उस पहचानकर्ता का उपयोग करना चाहते हैं)। –
हमें दिखाएं कि आपने अपने पायथन कोड में sql_function_above 'को कैसे परिभाषित किया है। – nos
क्षमा करें, यह मेरे हिस्से पर एक सरलीकरण था। विभिन्न अलग-अलग तरीकों से चर लिखने का प्रयास किया। मैंने एक एसक्यूएल फ़ाइल से पाठ को पढ़ने का भी प्रयास किया। इन सभी ने एक ही त्रुटि उत्पन्न की। मैंने कई तरीकों में से एक को मूल प्रश्न में संपादित किया है। PS सभी के लिए धन्यवाद उत्तर - यह मेरा पहला समय stackoverflow.com का उपयोग कर रहा है और आपके द्वारा जवाबों की मदद और गति अद्भुत है :) –