Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

Cari nama di cx_Oracle

Jangan lakukan ini dengan Python. Jika Anda ingin mencari sesuatu dalam tabel database sejauh ini, cara tercepat dan paling efisien adalah melakukannya di SQL. Jangan lupa untuk menggunakan variabel pengikat .

Dengan asumsi Anda memiliki objek kursor curs mungkin terlihat seperti ini (dengan asumsi tabel Anda unik di 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

Kemudian jika Anda mencari sesuatu yang tidak ada, Anda akan mendapatkan yang berikut ini.

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

Alasan sebenarnya mengapa Anda tidak mendapatkan apa yang Anda harapkan adalah cx_Oracle mengembalikan daftar tupel sesuai PEP 249 . Anda mengharapkan hanya satu kolom yang akan dikembalikan sehingga Anda memerlukan akses indeks 0 dari tuple, jika Anda ingin melakukannya dengan cara Anda.

>>> 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. Gunakan TOP atau Rank ketika menemukan beberapa pengamatan pertama atau paling banyak

  2. Membuat JSON dan mengedit kueri kompleks (Oracle 11g)

  3. Mengonversi nomor menjadi tanggal di oracle

  4. Oracle/Sybase SQL - dapatkan nilai berdasarkan catatan sebelumnya (bukan LAG sederhana)

  5. Masukkan ke dengan serikat semua dan nextval tidak berfungsi dengan nilai duplikat