получить имена столбцов из результата запроса, используя pymssql - PullRequest
7 голосов
/ 04 марта 2011

Есть ли способ получить имена столбцов из результатов pymssql? Если я укажу as_dict = True, я получу словарь, который содержит все заголовки столбцов, но, поскольку это словарь, они не упорядочены.

Ответы [ 4 ]

15 голосов
/ 04 марта 2011

pymssql утверждает, что поддерживает Python DB-API , поэтому вы должны иметь возможность получить атрибут .description из вашего объекта курсора.

.description

       This read-only attribute is a sequence of 7-item
       sequences.  

       Each of these sequences contains information describing
       one result column: 

         (name, 
          type_code, 
          display_size,
          internal_size, 
          precision, 
          scale, 
          null_ok)

Итак, первый элемент в каждой из «внутренних» последовательностей - это имя для каждого столбца.

4 голосов
/ 20 октября 2015

Чтобы получить имена столбцов в одной строке, разделенной запятыми.

colNames = ""
for i in range(len(cursor.description)):
    desc = cursor.description[i]
        if i == 0:
            colNames = str(desc[0])
        else:
            colNames += ',' + str(desc[0])
        print colNames

В качестве альтернативы, передайте имена столбцов в список и используйте .join, чтобы получить их в виде строки.

colNameList = []
    for i in range(len(cursor.description)):
        desc = cursor.description[i]
        colNameList.append(desc[0])

        colNames = ','.join(colNameList)
        print colNames
2 голосов
/ 08 ноября 2016

Вы можете создать список имен упорядоченных столбцов, используя понимание списка в атрибуте описания курсора:

column_names = [item[0] for item in cursor.description]
0 голосов
/ 17 сентября 2015

Это базовое решение, требующее оптимизации, но приведенный ниже пример возвращает заголовок столбца и значение столбца в списке.

</p>

<pre><code>import pymssql

def return_mssql_dict(sql):
    try:

        con = pymssql.connect(server, user, password, database_name)
        cur = con.cursor()
        cur.execute(sql)

        def return_dict_pair(row_item):
            return_dict = {}
            for column_name, row in zip(cur.description, row_item):
                return_dict[column_name[0]] = row
            return return_dict

        return_list = []
        for row in cur:
            row_item = return_dict_pair(row)
            return_list.append(row_item)

        con.close()

        return return_list

    except Exception, e:
        print '%s' % (e)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...