有什么办法从pymssql结果中获取列名?如果我指定as_dict = True,则返回一个包含所有列标题的字典,但由于它是字典,因此它们不会被排序。使用pymssql从查询结果中获取列名
6
A
回答
14
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)
所以,在每一个 “内部” 的序列的第一个项目是每个列的名称。
0
这是一个基本的解决方案,需要优化,但下面的示例同时返回列标题和列值。
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)
2
要获得一个逗号隔开行的列名。
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
1
您可以使用列表中理解上的光标描述属性排序的列名的列表:
column_names = [item[0] for item in cursor.description]
相关问题
- 1. 如何从Java中的Hibernate查询结果中获取列名?
- 2. 无法获取列名pymssql
- 3. pymssql如何在查询结果
- 4. 如何使用对象查询语言从查询中获取结果列表
- 5. 从pg-promise查询中获取结果
- 6. 从AJAX查询中获取JSON结果
- 7. 使用sqlite3获取查询结果
- 8. 使用Legato gem获取查询结果
- 9. 从表中获取的列值从SQL查询的结果键
- 10. 查询以获取结果中的列名和值?
- 11. 使用pymssql将SQL Server查询结果导出为CSV
- 12. Pl/SQL - 从查询中获取列名
- 13. sqlalchemy查询:结果列名
- 14. 如何使用VBA从Access模糊查询中获取结果?
- 15. 如何使用root从Android中获取SQLite3查询的结果
- 16. 使用LIMIT子句从查询中获取结果数
- 17. 使用will_paginate从Rails查询中获取总计结果数
- 18. 从查询获取结果的空值
- 19. 从c网站获取查询结果#
- 20. 复杂的mysql查询(从结果中获取结果)
- 21. 获取结果Laravel查询
- 22. 获取SQL查询结果
- 23. 查询获取结果
- 24. 查询从表A和B中获取结果,然后使用结果从表中获取行A
- 25. 使用BCP查询获取列名称
- 26. 使用SQL查询获取列名称
- 27. 从Hibernate本机查询的结果中获取动态生成的列名称
- 28. 获取名称是第二个查询结果的列的值
- 29. 使用通配符从查询中获取列名称
- 30. 从查询结果列表
真的蟒蛇的方式来做到这一点是“”加入(cursor.description中) –
.description是7项元组的列表,所以“,”join(cursor.description)不会这样做。 – Robert