Python: - Как сохранить данные результата запроса в массиве и получить доступ к каждому элементу по номеру индекса - PullRequest
0 голосов
/ 28 января 2020

Я хочу сохранить данные в переменной массива скажем path_list и сохранить все состояния в этом массиве. И когда я печатаю path_list [0], он должен печатать «MSF», или когда я печатаю path_list [2], он должен печатать «MIF», но в настоящее время весь результат сохраняется в кортеже и не печатается, когда я использую print в для l oop. Однако, когда я печатаю его за пределами l oop, он работает. Пожалуйста, предложите мне любой способ

Моя структура таблицы похожа на

STATE    TOC      ID      NUMBER
MSF   MSPROFMSV 465984  5926987700
MSF   MSPROFMSV 465977  5926063400
MIF   MIPROFMSV 465977  5926063100
MIF   MIPROFMSV 465977  5926063900

Код: -

import cx_Oracle
import shutil
import os
import logging
import time
import re
timestr = '_'+time.strftime("%Y%m%d-%H%M%S")    
conn = cx_Oracle.connect(user=r'lsaxena2/Dec2*19k@ed03:1521/encdv03svc.uhc.com') 
cur_path = conn.cursor()
cur_file = conn.cursor()
cur_path.execute('select distinct state from E0572476.ENSUBAPP_config order by state') 
path_exec = cur_path.fetchall()
i=0
path_list = []
print (path_exec[1][0])
while i < len(path_exec):
   path_list = path_exec[i][0]
   print (path_list[i])    
   i = i+ 1

1 Ответ

0 голосов
/ 28 января 2020

SQL генерирует строки, которые всегда являются кортежами. Поскольку cr.fetchall извлекает все результаты, вы получаете список строк = список кортежей. Даже если у вас есть только одно значение, оно равно 1.

Так что вам просто нужно извлечь одно значение из вашего кортежа и переместить его в список вывода:

path_list = [row[0] for row in path_exec]

Кстати Ваша схема именования ужасна. И я не понимаю, почему у вас есть два курсора или почему вы никогда не закрываете их

import cx_Oracle
import time

timestr = '_'+time.strftime("%Y%m%d-%H%M%S")

with cx_Oracle.connect(user=r'lsaxena2/Dec2*19k@ed03:1521/encdv03svc.uhc.com') as conn,\
     conn.cursor() as cr:
    cr.execute('select distinct state from E0572476.ENSUBAPP_config order by state') 
    states = [state for [state] in cr.fetchall()]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...