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