列名切成两半,用pyodbc和Teradata数据库编码的数据不正确

问题描述 投票:0回答:1

我正在尝试在我的Teradata数据库上执行一个简单的'SELECT'查询,但是我的列名被切成两半。当我尝试将返回的数据转换为字典时,我发现所有信息均未正确编码。信息来自公共星球大战API:https://swapi.co/

这里是我在控制台中的结果的屏幕截图:

enter image description here

这里是我的代码:

from database import Utils
import pyodbc

connection_string = "driver={Teradata};dbcname=my_database;DefaultDatabase=something;uid=my_user;pwd=password;charset=utf8;"

oConnexion = pyodbc.connect(connection_string, autocommit=True)
import pandas as pd
query="SELECT * FROM DEV_EDW.STAR_WARS_CHARACTERS;"

oConnexion.setdecoding(pyodbc.SQL_CHAR, encoding='utf-8')
oConnexion.setdecoding(pyodbc.SQL_WCHAR, encoding='utf-8')
oConnexion.setdecoding(pyodbc.SQL_WMETADATA, encoding='utf-8')
oConnexion.setencoding(encoding='utf-8')


data=pd.read_sql(query, oConnexion)
print(data)

for col in data.columns: 
    print(col) 

dictionary = data.to_dict('records')
print(dictionary)

我已经尝试过:

enter image description here

这里是点冻结的结果的一部分:

pandas==0.25.3
pyodbc==4.0.27
python-apt==1.6.4
python-dateutil==2.6.1
python-debian==0.1.32

任何帮助赞赏

python teradata python-3.7 pyodbc ubuntu-18.04
1个回答
0
投票

我终于找到了解决方案。我不需要解码行。

#oConnexion.setdecoding(pyodbc.SQL_CHAR, encoding='utf-8')
#oConnexion.setdecoding(pyodbc.SQL_WCHAR, encoding='utf-8')
#oConnexion.setdecoding(pyodbc.SQL_WMETADATA, encoding='utf-8')
#oConnexion.setencoding(encoding='utf-8')

如果没有:,一切都很好

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.