Найти - Пользователи
Полная версия: Операции со списком.
Начало » Python для новичков » Операции со списком.
1
Gam
Добрый вечер.
Застрял на небольшом и непонятном для меня моменте. Хотя мне кажется что “собака зарыта совсем недалёко”.
Идёт SQL запрос по результатам которого данные выгружаются в Excel.
    cursor = connection.cursor()
    cursor.execute(SQL)
    for row in cursor:
        T = T + 1
        MEM_1, MEM_2, MEM_3, NAME = row
        ws.write(T, 0, MEM_1.decode('utf-8'))
        ws.write(T, 1, MEM_2)
        ws.write(T, 2, MEM_3)
        ws.write(T, 3, NAME.decode('utf-8'))
    cursor.close()
Всё вроде работает, но при попытке заменить
 MEM_1, MEM_2, MEM_3, NAME = row
на
 desc = [d[0] for d in cursor.description]
у меня, самоучки, уже тупик. Как преобразовать desc в понятный MEM_1, MEM_2, MEM_3, NAME?
 cursor = CONNECTION.cursor()
    cursor.execute(SQL)
    desc = [d[0] for d in cursor.description]
    for row in cursor:
        desc = row
        

Есть подозрение что ответ был уже тут: http://stackoverflow.com/questions/7745952/python-expand-list-to-function-arguments
terabayt
напишите что вы хотите получить
с write
а то смотря на это
    desc = [d[0] for d in cursor.description]
    for row in cursor:
        desc = row
я что-то мало понимаю…
Gam
На команду:
desc = [d[0] for d in cursor.description]
выходит результат наименования полей в выполненном запросе в виде списка
(MEM_1, MEM_2, MEM_3, NAME)
Я хотел лишь вывести результат значения в виде переменных.
Т.е. - если
desc = (MEM_1, MEM_2, MEM_3, NAME)
то и в коде результат должен быть аналогично
MEM_1, MEM_2, MEM_3, NAME = row
А row это строка из результата sql-запроса в виде:
5587   587   58   ГЕЛ548779


Если ещё проще то типо такого
def descw (list):
    if list == 'MEM_1': return ws.write(EXCELSTR, EXCELSTB, list)
    if list == 'MEM_2': return ws.write(EXCELSTR, EXCELSTB, list)
    if list == 'MEM_3': return ws.write(EXCELSTR, EXCELSTB, list)
    if list == 'NAME': return ws.write(EXCELSTR, EXCELSTB, 'NAME.decode(\'utf-8\')')
...
cursor = CONNECTION.cursor()
    cursor.execute(SQL)
    desc = [d[0] for d in cursor.description]
    for row in cursor:
        desc = row
        descw(desc)
Правда я конечно неверно написал код и он не работает. Я ещё не понял конкретно логику и осмысливаю в процессе. В результате, должно получиться, что не важно сколько полей будет в выполненном запросе, он выгрузит их всех согласно функции descw (list) в которой заранее прописаны все правила. Сейчас я застрял только в выведении результата значений в виде переменных.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB