首页 > 解决方案 > 从 pandas.read_sql_query().to_dict() 获取下一个键并用于字典理解

问题描述

我从数据库中提取两列后得到的数据结构来自:

sql = pd.read_sql_query("select Name,FieldType from database.dbo.meta_table where [Table] = 'CLoad'",conn)

返回这个:

 {'Name': {0: 'Item0', 1: 'Item1', 2: 'Item2', 3: 'Item3', 4: 'Item4', 5: 'Item5', 6: 'Item6', 7: 'Item7', 8: 'Item8', 9: 'Item9', 10: 'Item10', 11: 'Item11', 12: 'Item12'}, 'FieldType': {0: 'int', 1: 'int', 2: 'int', 3: 'int', 4: 'date', 5: 'date', 6: 'datetime', 7: 'int', 8: 'bit', 9: 'bit', 10: 'datetime2', 11: 'varchar', 12: 'bit'}}

我的问题是从中创建一个字典,输出如下:

{'Item0': 'int', 'Item1': 'int', 'Item2': 'int', 'Item3': 'int', 'Item4': 'date', 'Item5': 'date', 'Item6': 'datetime', 'Item7': 'int', 'Item8': 'bit', 'Item9': 'bit', 'Item10': 'datetime2', 'Item11': 'varchar', 'Item12': 'bit'}

我确实通过像这样对密钥进行硬编码来解决问题:

e = {sql['Name'][i]:sql['FieldType'][i] for i in range(len(sql[key]))}

但是必须有一种方法来以编程方式按顺序获取下一个键。任何有关更好解决方案的帮助将不胜感激。

标签: pythonsql-serverpandasdataframedictionary

解决方案


转换sql为 adataframe然后使用df.to_dict

sql =  {'Name': {0: 'Item0', 1: 'Item1', 2: 'Item2', 3: 'Item3', 4: 'Item4', 5: 'Item5', 6: 'Item6', 7: 'Item7', 8: 'Item8', 9: 'Item9', 10: 'Item10', 11: 'Item11', 12: 'Item12'}, 'FieldType': {0: 'int', 1: 'int', 2: 'int', 3: 'int', 4: 'date', 5: 'date', 6: 'datetime', 7: 'int', 8: 'bit', 9: 'bit', 10: 'datetime2', 11: 'varchar', 12: 'bit'}}

output_dict = pd.DataFrame(sql).set_index('Name').to_dict()['FieldType'] 

输出:

{'Item0': 'int',
 'Item1': 'int',
 'Item2': 'int',
 'Item3': 'int',
 'Item4': 'date',
 'Item5': 'date',
 'Item6': 'datetime',
 'Item7': 'int',
 'Item8': 'bit',
 'Item9': 'bit',
 'Item10': 'datetime2',
 'Item11': 'varchar',
 'Item12': 'bit'}

推荐阅读