使用pymssql获取查询结果的列名

9 投票
4 回答
18059 浏览
提问于 2025-04-16 12:58

有没有办法从pymssql的结果中获取列名?如果我设置as_dict=True,我会得到一个字典,这个字典里包含了所有的列标题,但因为它是字典,所以列名的顺序是不固定的。

4 个回答

4

要把列名放在一行,用逗号分隔开。

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
7

你可以通过对游标描述属性使用列表推导式,来创建一个有序的列名列表:

column_names = [item[0] for item in cursor.description]
16

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)

所以,每个“内部”序列中的第一个项目就是每一列的名称。

撰写回答