как сделать список из вывода оракула - PullRequest
0 голосов
/ 21 сентября 2019

Я пытаюсь составить список из вывода запроса оракула.Список будет в дальнейшем использоваться для построения графика.Я не могу сделать чистый список из вывода запроса.Пожалуйста, предложите.

"""
Created on Sat Sep 21 11:36:10 2019

@author: Pitanshu
"""
# import modules
import cx_Oracle

# database connection
user=input('Enter the user for database : ')
passwd=input('enter the password for the above user : ')
conn_str=user+'/'+passwd+'@localhost/orcl'
conn=cx_Oracle.connect(conn_str)

# creation of cursor
cursor=conn.cursor()
cur=cursor.execute('select distinct emp_name from employee')

employee=[]

col_names = [row[0] for row in cursor.description]
print(col_names)

for i in cur:
    employee.append(i)

print(employee)    

#closing cursor and connection
cursor.close()
conn.close()

полученный вывод:

Enter the user for database : system
enter the password for the above user : ********
['EMP_NAME']
[('e',), ('d',), ('a',), ('b',), ('c',)]

ожидаемый вывод:

Enter the user for database : system
enter the password for the above user : ********
['EMP_NAME']
['e','d','a','b','c']

1 Ответ

0 голосов
/ 21 сентября 2019

Просто измените эквивалентные строки на:

for i in cur:
    employee.append(i[0]) #for python newbies, getting the only element in the list could also be done with: i[-1] or next(iter(i)) or operator.itemgetter(0)(i) or operator.itemgetter(-1)(i) or i.pop() or i.pop(0) or i.pop(-1)

Логика, стоящая за этим: при запросе таблицы реляционной базы данных вы получаете строки (в форме списков в данном случае) взамен.Поэтому, даже если вам нужен только один столбец на строку, вы получите список на строку с одним элементом, а не с самим элементом.

В соответствии с соглашением об именах, вы можете использовать employeesвместо employee при именовании списка.

...