psycopg2 vs sys.stdin.read() -
मेरे पास नीचे की तरह छोटा कोड है:
#! / Usr / bin / python आयात Psycopg2, sys कोशिश: conn = psycopg2.connect ("dbname = 'smdr' user = 'bino'"); को छोड़कर: प्रिंट "मैं डेटाबेस से कनेक्ट करने में असमर्थ हूँ" cur = conn.cursor () v_num = '1' cur.execute ("SELECT * from genctr WHERE कोड =% (num) s", dict (num = v_num) ) पंक्तियों में पंक्ति के लिए \ n "ctrnum = 0: प्रिंट पंक्ति [0] +", "+ पंक्ति [1]
P> जब मैं इसे चलाता हूं, मुझे bino @ erp: ~ / mydoc / openerp / smdr $ ./genctr.py मुझे डेटाबेस दिखाएं: 1, बहामा 1, बारबाडोस 1, कनाडा 1, केमन द्वीप 1, संयुक्त राज्य अमेरिका 1, वर्जिन आइलैंड्स अमेरिका
मैं "v_num = '1'" "v_num = sys.stdin.read ()" के साथ बदलने की कोशिश करता हूं
#! / Usr / bin / python आयात psycopg2, sys कोशिश: conn = psycopg2.connect ("dbname = 'smdr' user = 'bino'"); को छोड़कर: प्रिंट "मैं डेटाबेस से कनेक्ट करने में असमर्थ हूँ" cur = conn.cursor () #v_num = '1' v_num = sys.stdin.read () cur.execute ("SELECT * from genctr WHERE कोड =% (num) ) S ", dict (num = v_num) पंक्तियां = cur.fetchall () प्रिंट" \ n मुझे डेटाबेस दिखाएं: \ n "ctrnum = 0 पंक्तियों में पंक्ति के लिए: प्रिंट पंक्ति [0] +", "+ पंक्ति [1 ]
लेकिन जब मैं इसे चलाता हूं, तो मुझे यह केवल मिला:
bino @ erp: ~ / mydoc / openerp / smdr $ echo 1 | ./ ईमानदारी से
-बिनो > P>
प्रतिध्वन 1
आपके प्रोग्राम को "1 \ n" दे रहा है (वह है, "1" बाद में एक नई पंक्ति के साथ)। sys.stdin.read ()
उस सटीक स्ट्रिंग को वापस करने जा रहा है, और फिर psycopg2 एसक्यूएल स्टेटमेंट को SELECT * को जेनरेटर WHERE code = '1 \ n' । नतीजे कोई मिलान परिणाम न होने वाला है, इसलिए लूप के अंदर के कोड को कभी भी निष्पादित नहीं किया जाएगा, यही वजह है कि आपको कोई अतिरिक्त आउटपुट दिखाई नहीं देता है। या तो echo-n 1
को स्ट्रिंग से किसी भी अग्रणी और अनुक्रमित सफेद स्थान को हटाने के लिए, न्यूलाइन या sys.stdin.read ()। Strip ()
दबाएं। यदि कोड
फ़ील्ड एक पूर्णांक है, तो यह एक अच्छा विचार हो सकता है कि sys.stdin.read ()
का परिणाम एक int पर भी, जैसा भी हो: < / P>
int (sys.stdin.read ()। Strip ())
Comments
Post a Comment