नहीं इसे पायथन में करें। यदि आप किसी डेटाबेस तालिका में कुछ खोजना चाहते हैं तो इसे SQL में सबसे तेज़ और सबसे कुशल तरीका है। बाइंड वैरिएबल ।
मान लें कि आपके पास एक कर्सर ऑब्जेक्ट है curs
यह कुछ इस तरह दिख सकता है (यह मानते हुए कि आपकी तालिका var
. पर अद्वितीय है )।
>>> sql = "select * from my_table where var = :var"
>>> bind_variables = {'var' : 'smth'}
>>>
>>> curs.execute(sql, bind_variables)
[<cx_Oracle.STRING with value None>]
>>> results = curs.fetchall()
>>> results
[('smth',)]
>>> try:
... var = results[0][0]
... print ('Yes')
... except IndexError:
... print ('No')
...
Yes
फिर यदि आप किसी ऐसी चीज़ की तलाश कर रहे हैं जो मौजूद नहीं है तो आपको निम्न मिलता है।
>>> bind_variables = {'var' : 'other'}
>>> results = curs.fetchall()
>>> results
[]
>>> try:
... var = results[0][0]
... print ('Yes')
... except IndexError:
... print ('No')
...
No
आप जो अपेक्षा करते हैं वह आपको नहीं मिलने का वास्तविक कारण यह है कि cx_Oracle पीईपी 249 . आप केवल एक कॉलम के वापस आने की उम्मीद कर रहे हैं, इसलिए यदि आप इसे अपने तरीके से करना चाहते हैं, तो आपको टुपल के 0 इंडेक्स तक पहुंच की आवश्यकता है।
>>> rows = [('other',),('smth',)]
>>> var = 'smth'
>>> for row in rows:
... if var == row[0]:
... print ('Yes')
...
Yes