python - 从 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]))}
但是必须有一种方法来以编程方式按顺序获取下一个键。任何有关更好解决方案的帮助将不胜感激。
解决方案
转换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'}
推荐阅读
- ruby-on-rails - 单击另一个用户的用户名链接到我的个人资料而不是用户的个人资料
- javascript - 主体中的 Javascript 代码不适用于角度模板
- csv - Hive 将数据从 csv 导入表中的错误列
- android - 从后端服务器返回的非同质 JSON 数据
- qt - 如何同时获得 qgraphicsscene 和 qgraphicsitem 滴?
- sql - 是否可以限制 SQL 视图的值?
- php - “在哪里”在 Laravel 的选择查询中不起作用
- python - 如何在 Python 中处理用户输入?
- sql - 如何使用单个 Insert 语句插入数十万条记录?
- r - grep 和/或收集数据混淆