Python字典包含编码值

2024-09-30 20:37:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个pandas数据框oParameterData,我使用hiveodbc连接在Hadoop上构建查询。我用它来填充一个名为oParameter的Python字典

import pyodbc
import pandas

oConnexionString = 'Driver={ClouderaHive};[...]'
oConnexion = pyodbc.connect(oConnexionString, autocommit=True)
oConnexion.setencoding(encoding='utf-8')
oQueryParameter = "select * from my_db.my_table;"
oParameterData = pandas.read_sql(oQueryParameter, oConnexion)
oCursor = oConnexion.cursor()

for oRow in oParameterData.index:
    oParameter = {}
    oParameter['pTableName'] = oParameterData.loc[oRow,'game']
    oParameter['pDataPartition'] = oParameterData.loc[oRow,'partition']
    oParameter['pDataLocation'] = oParameterData.loc[oRow,'data_path']
    oParameter['pAvroSchemaURL'] = oParameterData.loc[oRow,'schema_path']

当我打印整本词典时,我有以下内容:

^{pr2}$

但当我逐个打印键和值时,它们会正确显示:

>>> print(oParameter['pTableName'])
>>> 'hero_game_context_gamemode'
>>> print(oParameter['pDataPartition'])
>>> 'dt'

请解释一下为什么要对字典进行正确的编码? 我在下面描述的后续查询中使用这些参数:Hive ParseException in Drop Table Statement 我猜查询会因为这个编码问题而失败。在


Tags: inimportgamepandas字典mylocpyodbc
1条回答
网友
1楼 · 发布于 2024-09-30 20:37:02

在进一步调查之后,我发现在使用pyodbc连接到Hadoop时,编码设置不正确。在

我是这样联系的:

import pyodbc
import pandas

oConnexionString = 'Driver={ClouderaHive};[...]'
oConnexion = pyodbc.connect(oConnexionString, autocommit=True)
oConnexion.setencoding(encoding='utf-8')

我改成这样联系:

^{pr2}$

现在,当我从数据帧构建字典时,它会正确显示。在

相关问题 更多 >