有没有办法从 pymssql 结果中获取列名?如果我指定 as_dict=True 我会返回一个包含所有列标题的字典,但由于它是一个字典,它们没有被排序。
问问题
14862 次
4 回答
16
pymssql 声称支持 Python DB-API,因此您应该能够.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)
因此,每个“内部”序列中的第一项是每列的名称。
于 2011-03-04T05:27:20.970 回答
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
于 2015-10-20T06:35:54.283 回答
4
您可以使用游标描述属性上的列表推导来创建有序列名称的列表:
column_names = [item[0] for item in cursor.description]
于 2016-11-08T19:27:54.373 回答
1
这是一个基本解决方案,需要优化,但下面的示例在列表中返回列标题和列值。
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)
于 2015-09-16T21:52:45.703 回答