Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Wyszukaj nazwę w cx_Oracle

Nie zrób to w Pythonie. Jeśli chcesz wyszukać coś w tabeli bazy danych, zdecydowanie najszybszym i najskuteczniejszym sposobem jest zrobienie tego w SQL. Nie zapomnij użyć zmiennych wiązania .

Zakładając, że masz obiekt kursora curs może wyglądać mniej więcej tak (zakładając, że twoja tabela jest unikalna na 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

Jeśli szukasz czegoś, co nie istnieje, otrzymasz następujące informacje.

>>> bind_variables = {'var' : 'other'}
>>> results = curs.fetchall()
>>> results
[]
>>> try:
...     var = results[0][0]
...     print ('Yes')
... except IndexError:
...     print ('No')
...
No

Faktycznym powodem, dla którego nie otrzymujesz tego, czego oczekujesz, jest to, że cx_Oracle zwraca listę krotek zgodnie z PEP 249 . Oczekujesz, że zostanie zwrócona tylko jedna kolumna, więc potrzebujesz dostępu do indeksu 0 krotki, jeśli chcesz to zrobić w taki sposób, w jaki jesteś.

>>> 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. Jak wstawić listę jako parametr z powershell do SqlPlus

  2. Połączenie z Oracle działa za pośrednictwem aplikacji konsolowej i nie działa za pośrednictwem usługi sieciowej

  3. Przechowuj wynik zapytania minus z wieloma kolumnami w zmiennej w Oracle PL/SQL

  4. przekazanie nazwy tabeli jako parametru plsql

  5. Uzyskanie sumy kilku kolumn z dwóch tabel