Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

cx_Oracle में नाम खोजें

नहीं इसे पायथन में करें। यदि आप किसी डेटाबेस तालिका में कुछ खोजना चाहते हैं तो इसे 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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एसक्यूएल में दो कॉलम का अंतर लेना चाहते हैं

  2. oracle को pdo से, SID और INSTANCE_NAME से कनेक्ट करें

  3. Oracle ट्रिगर हटाने के बाद... म्यूटेटिंग टेबल (ORA-04091) से कैसे बचें?

  4. तालिका बदल रही है, ट्रिगर/फ़ंक्शन इसे नहीं देख सकता है (औसत ग्रेड को 2.5 से नीचे गिरने से रोकता है)

  5. खंड से के लिए एक स्तंभ से तालिका का नाम प्राप्त करें